1.StrictMode StrictMode 是android API 9 引入的一個類, 能夠協助開發人員 發現代碼中的一些問題。它可以設定一些策略,當程式違反這些策略的時候,它會提示開發人員。 主要有兩大類策略,一個是線程方面的策略,一個是VM方面的策略。線程策略方面,它能夠發現UI線程讀寫DISK,UI線程訪問網路,自己寫的速度慢的代碼。VM策略方面,它能夠發現 Activity記憶體泄露, SQL 對象記憶體泄露, 資源未釋放,能夠限定某個類的最大對象數。當程式違反這些策略的時候,它會通過一定方式通知開發人員,如log等。具體代碼如下。
public static void enableStrictMode() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { StrictMode.ThreadPolicy.Builder threadPolicyBuilder = //線程策略 new StrictMode.ThreadPolicy.Builder() .detectAll() //發現所有策略的違反行為 .penaltyLog(); //發現違反策略,列印log。還有其他的方式,參考API StrictMode.VmPolicy.Builder vmPolicyBuilder = //VM策略 new StrictMode.VmPolicy.Builder() .detectAll() .penaltyLog(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { threadPolicyBuilder.penaltyFlashScreen(); //發現違反策略的行為,是螢幕閃爍 vmPolicyBuilder .setClassInstanceLimit(MyClass.class, 1); //這裡限制 MyClass 的執行個體最多隻有一個,否則違反策略。 } StrictMode.setThreadPolicy(threadPolicyBuilder.build()); StrictMode.setVmPolicy(vmPolicyBuilder.build()); } }
可以把它放到Application . onCreate() 裡,這樣,程式開啟的時候,它就起作用了。一定不要在release版中使用它,很耗效能的。
if(debug){ <pre name="code" class="java"><span style="white-space:pre"> </span>enableStrictMode() ;</pre>} <pre></pre> <br> <br>