android.os.NetworkOnMainThreadException 異常處理

來源:互聯網
上載者:User

項目是2.1開發 測試手機是android4.0時候提示 android.os.NetworkOnMainThreadException異常

出錯誤地方是訪問網路的webservice有問題

在網上找了半天說是用

@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
String strVer=GetVersion.GetSystemVersion();
strVer=strVer.substring(0,3).trim();
float fv=Float.valueOf(strVer);
if(fv>2.3)
{
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // 這裡可以替換為detectAll() 就包括了磁碟讀寫和網路I/O
.penaltyLog() //列印logcat,當然也可以定位到dropbox,通過檔案儲存相應的log
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects() //探測SQLite資料庫操作
.penaltyLog() //列印logcat
.penaltyDeath()
.build());
}
super.onCreate(savedInstanceState);

}

代碼注意 StrictMode是2.3以上版本才有的沒辦法我又把項目升級成2.3

但這樣做2.3以下版本安裝完成後開啟後就報錯,在調用StrictMode之前做了下版本判斷

 從 Android 2.3 開始提供了一個新的類 StrictMode,該類可以用於捕捉髮生在應用程式主線程中耗時的磁碟、網路訪問或函數調用,可以協助開發人員改進程式,使主線程處理 UI 和動畫在磁碟讀寫和網路操作時變得更平滑,避免主線程被阻塞。

 

給 Android 應用開發人員的十個建議

android.os.Build.VERSION.RELEASE;返回當前系統版本

以上問題可以解決。

 

注意:造成這樣的錯誤原因是代碼不符合Android規範,如果把上面訪問方式改為非同步作業就不會出現在4.0上訪問出現 android.os.NetworkOnMainThreadException異常

 如:

new Thread(){
@Override
public void run(){
//你要執行的方法
//執行完畢後給handler發送一個空訊息
handler.sendEmptyMessage(0);
}
}.start();

 

//定義Handler對象
private Handler handler =new Handler(){
@Override
//當有訊息發送出來的時候就執行Handler的這個方法
public void handleMessage(Message msg){
super.handleMessage(msg);
//處理UI
}
};

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.