在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.一般情況我們應該這樣做
啟動一條子線程進行你的網絡請求。
當然,如果你的應用程序執行的網絡請求數據量很小的話,可以使用第一種方案。