Skip to content

Android:Socket

Android Socket Programming Howto.

Category

Troubleshooting

NetworkOnMainThreadException

이전 버전까지는 UI쓰레드에서 네트워크 작업을 처리해도 별도로 오류가 발생하지는 않았습니다. 물론 네트워크 상태가 좋지 않으면 메인 쓰레드가 블록되어 애플리케이션이 멈춘 것처럼 보이기에 잘 쓰지는 않았지요. 하지만 일부 애플리케이션은 그냥 메인 쓰레드에서 네트워크 작업을 처리해서 사용성에 안좋은 영향을 끼친 것은 사실입니다. 아마 안드로이드 4.0 이후부터는 이와 같이 사용성에 영향을 주는 요소를 미연에 차단하려나 봅니다. 그렇다면.. 이 문제는 어떻게 해결해야하느냐구요?? 간단합니다. AsyncTask나 Thread를 사용하여 UI쓰레드에 영향을 주지 않도록 작성하면 됩니다. 조금 귀찮기는 하더라도, 네트워크 작업은 별도의 스레드에서 처리되도록 구현하는 것이 훨씬 좋으므로 이 기회에 AsyncTask를 사용하는 습관을 들이는 것도 나쁘지는 않을 듯 합니다.

See also

Favorite site

References


  1. Android_ics_NetworkOnMainThreadException_troubleshooting.pdf 

  2. Android_server_client_socket_to_communicate.pdf