if (Build.VERSION.SDK_INT >=18) {
StrictMode.VmPolicy.Builder builder =new StrictMode.VmPolicy.Builder();
? ? StrictMode.detectFileUriExposure(builder.build());
}
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()//線程策略(ThreadPolicy)
? ? ? ? ? ? ? ? ? ? .detectDiskReads()//檢測(cè)在UI線程讀磁盤(pán)操作
? ? ? ? ? ? ? ? ? ? .detectDiskWrites()//檢測(cè)UI線程寫(xiě)磁盤(pán)操作
? ? ? ? ? ? ? ? ? ? .detectCustomSlowCalls()//發(fā)現(xiàn)UI線程調(diào)用的哪些方法執(zhí)行得比較慢
? ? ? ? ? ? ? ? ? ? .detectResourceMismatches()//最低版本為API23? 發(fā)現(xiàn)資源不匹配
? ? ? ? ? ? ? ? ? ? .detectNetwork() //檢測(cè)在UI線程執(zhí)行網(wǎng)絡(luò)操作
? ? ? ? ? ? ? ? ? ? .penaltyDialog()//一旦檢測(cè)到彈出Dialog
? ? ? ? ? ? ? ? ? ? .penaltyDeath()//一旦檢測(cè)到應(yīng)用就會(huì)崩潰
? ? ? ? ? ? ? ? ? ? .penaltyFlashScreen()//一旦檢測(cè)到應(yīng)用將閃屏退出 有的設(shè)備不支持
? ? ? ? ? ? ? ? ? ? .penaltyDeathOnNetwork()//一旦檢測(cè)到應(yīng)用就會(huì)崩潰
? ? ? ? ? ? ? ? ? ? .penaltyDropBox()//一旦檢測(cè)到將信息存到DropBox文件夾中 data/system/dropbox
? ? ? ? ? ? ? ? ? ? .penaltyLog()//一旦檢測(cè)到將信息以LogCat的形式打印出來(lái)
? ? ? ? ? ? ? ? ? ? .permitDiskReads()//允許UI線程在磁盤(pán)上讀操作
? ? ? ? ? ? ? ? ? ? .build());
? ? ? ? ? ? StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()//虛擬機(jī)策略(VmPolicy)
? ? ? ? ? ? ? ? ? ? .detectActivityLeaks()//最低版本API11 用戶檢查 Activity 的內(nèi)存泄露情況
? ? ? ? ? ? ? ? ? ? .detectCleartextNetwork()//最低版本為API23? 檢測(cè)明文的網(wǎng)絡(luò)
? ? ? ? ? ? ? ? ? ? .detectFileUriExposure()//最低版本為API18? 檢測(cè)file://或者是content://
? ? ? ? ? ? ? ? ? ? .detectLeakedClosableObjects()//最低版本API11? 資源沒(méi)有正確關(guān)閉時(shí)觸發(fā)
? ? ? ? ? ? ? ? ? ? .detectLeakedRegistrationObjects()//最低版本API16? BroadcastReceiver、ServiceConnection是否被釋放
? ? ? ? ? ? ? ? ? ? .detectLeakedSqlLiteObjects()//最低版本API9? 資源沒(méi)有正確關(guān)閉時(shí)回觸發(fā)
? ? ? ? ? ? ? ? ? ? .setClassInstanceLimit(MyClass.class, 2)//設(shè)置某個(gè)類的同時(shí)處于內(nèi)存中的實(shí)例上限,可以協(xié)助檢查內(nèi)存泄露
? ? ? ? ? ? ? ? ? ? .penaltyLog()//與上面的一致
? ? ? ? ? ? ? ? ? ? .penaltyDeath()
? ? ? ? ? ? ? ? ? ? .build());