為了獲得更多出現(xiàn)在代碼中的關于公共問題的信息,我們激活了StrictMode模式。
StrictMode幫助我們偵測敏感的活動,如我們無意的在主線程執(zhí)行磁盤訪問或者網(wǎng)絡調(diào)用。正如你所知道的,在主線程執(zhí)行繁重的或者長時的任務是不可取的。因為Android應用的主線程時UI線程,它被用來處理和UI相關的操作:這也是獲得更平滑的動畫體驗和響應式App的唯一方法。
為了在我們的App中激活StrictMode,我們只需要在MainActivity中添加幾行代碼,即onCreate()方法中這樣:
@Override
public void onCreate() {
super.onCreate();
if (BuildConfig.DEBUG) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().build());
}
}
我們并不想它總是激活著,因此我們只在debug構建時使用。這種配置將報告每一種關于主線程用法的違規(guī)做法,并且這些做法都可能與內(nèi)存泄露有關:Activities、BroadcastReceivers、Sqlite等對象。
選擇了penaltyLog(),當違規(guī)做法發(fā)生時,StrictMode將會在logcat打印一條信息。