做一個簡短筆記:
private void setStrictMode(){
// 详见StrictMode文档
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
}
以上是一個讓主線程能夠訪問網路的方法,在4.0之後訪問網路在主線程之中會產生NetworkOnMainThreadException,必須另開新的線程執行,以防止ANR的異常,或是使用StrictMode物件能夠解決這個問題。
參考這裡、這裡以及這裡。
正確的方法建議還是使用新的thread來操作,可以參考非同步資料交換的方法,在處理上會比較安全。
沒有留言:
張貼留言
你好,我是小書,如果文章內容有錯誤,或是看到有建議以及任何感想時,歡迎提出分享,我們一起學習一起努力。