본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] android.os.NetworkOnMainThreadException.

by 돼지왕 왕돼지 2012. 11. 9.
반응형


android.os.NetworkOnMainThreadException

- 해당 Exception 은 Network 관련된 operation 을 Main Thread 에서 수행했을 때 발생하는 Exception 이다. 해당 Exception 은 진저브레드 ( 2.3.3 )에서는 발생하지 않았고, ICS ( 4.0.0 )부터 발생을 하기 시작한다. 필자가 진저와 ICS 단말 둘다에서 테스트해본 결과 진저에서는 발생하지 않던 exception 이 ICS 에서 발생했기 때문이다. 이는 Strict mode 라는 것이 등장했기 때문.

- 원인은 말 그대로 Network 관련 operation 을 main thread 에서 했기 때문이다. 추가로 strict mode 가 설정되었기 때문이다.


- 해결책은 2가지가 있다.

1. network operation 을 async task 나 다른 thread 로 작업한다.

2. StrictMode 의 ThreadPolicy 해제한다.

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();

StrictMode.setThreadPolicy(policy);  




반응형

댓글