安卓開發解決android.os.NetworkOnMainThreadException異常方法(主線程不能直接調用webservice)

來源:互聯網
上載者:User

標籤:android   style   blog   http   color   io   os   ar   java   

安卓開發解決android.os.NetworkOnMainThreadException異常方法  

2013-01-07 14:01:04|  分類: 技術 |  標籤:安卓  技術  java  |舉報|字型大小 訂閱

  在android 2.3上訪問網路的方法,在android 4.0上運行時報android.os.NetworkOnMainThreadException異常,主要問題在於4.0中訪問網路不能在主線程中進行,有兩個方法可以解決。
第一種是在主線程中增加如下代碼[ 不推薦]:
// 詳見StrictMode文檔   StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()  
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
第二種方法是啟動非同步線程執行[ 推薦]:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 啟動線程執行下載任務
new Thread(downloadRun).start();
}

/**
* 下載線程
*/
Runnable downloadRun = new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
updateListView();
}
};

或者您也可以直接讓業務方法實現Runnable介面,然後用 new Thread(您的方法名).start()來啟動。

安卓開發解決android.os.NetworkOnMainThreadException異常方法(主線程不能直接調用webservice)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.