在android2.3.3上 用HttpURLConnection 抓資料 測試沒問題
在android4.0上就出錯
在2.3系統下開發的程序運行在4.0系統時報
android.os.NetworkOnMainThreadException異常,經過查文檔,
原來是4.0系統不允許主線程(UI線程)訪問網絡,因此導致了其異常
解決辦法:(在super.onCreate(savedInstanceState)前 加上紅色程式碼
但只能在2.3或以上系統使用 也就是說你的APK是4.0 但可適用的最低系統為android2.3)
public void onCreate(Bundle savedInstanceState) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.penaltyLog()
.penaltyDeath()
.build());
super.onCreate(savedInstanceState);
setContentView(R.layout.config);
}
從Android 2.3 開始提供了一個新的類StrictMode,該類可以用於捕捉發生在應用程序主線程中耗時的磁盤、網絡訪問或函數調用,可以幫助開發者改進程序,使主線程處理UI 和動畫在磁盤讀寫和網絡操作時變得更平滑,避免主線程被阻塞。
留言列表