728x90
반응형
android.os.NetworkOnMainThreadException 에러 해결방법만 원하시는 분은 3번으로 넘어가세요 ^^
1. 개념.
-. 안드로이드를 개발하다보면 android.os.NetworkOnMainThreadException 라는 에러메시지를 보곤한다.
위 에러는 안드로이드의 기본 activity에서 network 관련 API를 직접 사용했을때 발생한다.
이 개념은 대부분의 OS에서 적용되는 Limitation이다.
예를 들면 .net이라고 불리는 윈도우 개발에서도 form(안드로이드에서는 activity의 개념)에서
network API를 쓰게되면 멈추는 현상(UserInterface stuck)이 발생한다.
2. 가능 솔루션
-. 사용자가 사용하는 User interface(버튼을 누르는 등의 동작)와 별개의 프로세스(thread)에서 network를 사용해야한다.
즉, Thread를 따로 만들어 Network(Http등의 동작) API를 쓰도록하면 해결된다.
3. 해결 방법
-. 가장 간단한 해결법을 공유하면 아래와 같다.
MainActivity에서 Network동작을 쓰고싶은곳에서 아래처럼 입력하면된다.
Before, 아래 코드를 실행하게 되면 NetworkOnMainThreadException 에러가 발생한다. |
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getXmlData(); // network 동작, 인터넷에서 xml을 받아오는 코드 } |
After, 아래처럼 new thread를 처리하면 에러없이 해결된다. 빨간색 코드가 추가된 코드이다. |
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new Thread(() -> { getXmlData(); // network 동작, 인터넷에서 xml을 받아오는 코드 }).start(); } |
이보다 간단한 해결방법은 보지 못하였다. ^^
즐거운 코딩이 되길 바랍니다.
좋은 하루 되세요.
반응형
'안드로이드 개발' 카테고리의 다른 글
[Android] No cached version available for offline mode (0) | 2021.08.08 |
---|---|
안드로이드 앱 광고 선택하기 admob adfit FAN applovin mopub (1) | 2021.08.01 |
안드로이드 광고 넣는 방법 코딩 (0) | 2021.01.24 |
안드로이드 광고 넣는 방법 admob (0) | 2021.01.24 |
안드로이드 GIF 추가하기 (0) | 2021.01.24 |