在Android2.x下运行良好的程序在Android4.0下报android.os.networkonmainthreadexception错

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

一般情况下还是使用线程好些

猜你喜欢

转载自coding1688.iteye.com/blog/1681431