解決Android3.0之后不能在主線程中進行HTTP請求


在Android3.0以后,會發現,只要是寫在主線程(就是Activity)中的HTTP請求,運行時都會報錯,這是因為Android在3.0以后為了防止應用的ANR(aplication Not Response)異常。

針對此問題有兩種解決的方法:

1.可以再Activity的onCreate()方法中加入這樣一段代碼,如下:

1  if (Build.VERSION.SDK_INT >= 11) {      
2      StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());    
3      StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());  
4  }

這樣后就可以在主線程中進行網絡操作了

2.一般情況我們應該這樣做

  啟動一條子線程進行你的網絡請求。

  當然,如果你的應用程序執行的網絡請求數據量很小的話,可以使用第一種方案。

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM