標籤:
在網上看到,自己以前也曾經遇到:
1 04-26 14:36:14.663: E/AndroidRuntime(10368): android.os.NetworkOnMainThreadException2 04-26 14:36:14.663: E/AndroidRuntime(10368): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)3 但是我在manifest裡配置了<uses-permission android:name="android.permission.INTERNET"/>
造成這樣的錯誤原因是代碼不符合Android規範,意思是主線程裡網路操作異常。
一般耗時操作都不允許放在主線程裡直接操作,如網路操作等,
一般需要開一個子線程去訪問網路,然後通過handler去更新介面。
當然,硬是要這樣測試操作也是可以的,參考增加以下代碼:
1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() 4 .detectDiskReads() 5 .detectDiskWrites() 6 .detectNetwork() // or .detectAll() for all detectable problems 7 .penaltyLog() 8 .build()); 9 StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()10 .detectLeakedSqlLiteObjects() //探測SQLite資料庫操作 11 .penaltyLog() //列印logcat 12 .penaltyDeath() 13 .build()); 14 super.onCreate(savedInstanceState);15 setContentView(R.layout.activity_main);
參考原文:http://www.apkbus.com/android-114524-1-1.html
【Android筆記】不能在主線程中進行網路操作