在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 和動畫在磁盤讀寫和網絡操作時變得更平滑,避免主線程被阻塞。


arrow
arrow

    cookiesp 發表在 痞客邦 留言(0) 人氣()