Android开发者网站关于android.os.networkonmainthreadexception的描述
http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html
The exception that is thrown when an application attempts to perform a networking operation on its main thread. This is only thrown for applications targeting the Honeycomb SDK or higher. Applications targeting earlier SDK versions are allowed to do networking on their main event loop threads, but it's heavily discouraged.
原来,在Android3.0(Honeycomb SDK)以后就不允许在主线程下直接操作网络了。因为网络操作可能导致界面无响应Application Not Responding (ANR) 。
http://developer.android.com/guide/practices/responsiveness.html
In Android, application responsiveness is monitored by the Activity Manager and Window Manager system services. Android will display the ANR dialog for a particular application when it detects one of the following conditions:
- No response to an input event (e.g. key press, screen touch) within 5 seconds
- A
BroadcastReceiver
hasn't finished executing within 10 seconds
网上说道,有两种解决方法:
一种是启用 StrictMode
另一种是使用 Thread
一般情况下还是使用线程好些