閱讀460 返回首頁    go 技術社區[雲棲]


Android3.0版本以上出現android.os.NetworkOnMainThreadException異常與處理方式

https://www.cnblogs.com/awenhome/archive/2012/01/04/2311659.html

以前用2.2 訪問WebService沒有問題,到3.0上訪問出現android.os.NetworkOnMainThreadException

找了資料經過實踐,解決方法如下:


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());

PS:1.在2.3版本以後加入了StrictMode類,而在3.0在網絡上能感覺到有更加嚴格的限製,更多的查詢API上的StrictMode ;
      2.使用的時候隻需要在你項目運行的入口Activity的OnCreate中放入這段代碼,那麼整個項目程序都有用。不需要每個Activity裏麵加入。
      3.StrictMode類一般是用來調試的,在程序運行中會打印很多消息,那是告訴你你的項目程序需要改進的地方。在Android項目中,最好的是讓界麵與後台裝載程序分開來。總之,如果你的程序代碼非常符合Android規範要求,那麼你完全可以不使用上麵的代碼

最後更新:2017-04-02 17:28:41

  上一篇:go android讀取大圖片並緩存
  下一篇:go 模仿網易新聞圖片點擊放大效果