Android_解決android.os.NetworkOnMainThr

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 和動畫在磁盤讀寫和網絡操作時變得更平滑,避免主線程被阻塞。
這是我的一個類 你可以自己創建類得到版本。

public static String GetSystemVersion()
{
return android.os.Build.VERSION.RELEASE;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章