天天看點

android之android.os.NetworkOnMainThreadException異常

使用android測試通路web伺服器的webservice時,在MainActivity的主線程中通路webservice,代碼如下:

由于在主線程中通路網絡,android版本為4.3,導緻如下異常:

原因:

android.os.NetworkOnMainThreadException是說不要在主線程中通路網絡,這個是android3.0版本開始就強制程式不能在主線程中通路網絡,要把通路網絡放在獨立的線程中。

解決:

在開發中,為了防止通路網絡阻塞主線程,一般都要把通路網絡放在獨立線程中或者異步線程AsyncTask中。

 先在AndroidManifest.xml檔案manifest節點中添加如下配置:

1、想要忽略這些強制政策問題的話,可以在onCreate()方法裡面加上

并在方法上加上@SuppressLint("NewApi"),重試,OK。

2、将網絡通路放到單獨線程中:

MainActivity的相應布局如下:

3、将網絡通路放到異步任務AsyncTask中,代碼如下: