2013年2月1日 星期五

筆記,訪問網路


做一個簡短筆記:

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物件能夠解決這個問題。

參考這裡這裡以及這裡

先記著,有空補充。

後來發現這應該是一個讓系統進入debug模式的方法,怎麼著也是一個不對勁的方法,
正確的方法建議還是使用新的thread來操作,可以參考非同步資料交換的方法,在處理上會比較安全。



















沒有留言:

張貼留言

你好,我是小書,如果文章內容有錯誤,或是看到有建議以及任何感想時,歡迎提出分享,我們一起學習一起努力。

追蹤者