android 2.3 StrictMode 使用

  ANR窗口產生的原因是多種多樣的。程序的主線程因爲IO讀寫或網絡阻塞而導致被阻塞了,外部存儲設備被獨佔了或系統負荷(load)過高

(即不是自己編寫的程序的問題,可能是系統或者其他第三方程序導致的問題),都有可能導致ANR窗口的出現。

  從Android 2.3開始提供了一個新的類StrictMode,可以幫助開發者改進他們的Android應用,StrictMode可以用於捕捉髮生在應用程序

主線程中耗時的磁盤、網絡訪問或函數調用,可以幫助開發者使其改進程序,使主線程處理UI和動畫在磁盤讀寫和網絡操作時變得更平滑,

避免主線程被阻塞,導致ANR窗口的發生。

 下面簡要說明下Android 2.3新特性StrictMode限制模式的工作方式,見下面的代碼:

public void onCreate() {
if (DEVELOPER_MODE) {
StrictMode.setThreadPolicy(
new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
// 這裏可以替換爲detectAll() 就包括了磁盤讀寫和網絡I/O
.penaltyLog() //打印logcat,當然也可以定位到dropbox,通過文件保存相應的log
.build());
StrictMode.setVmPolicy(
new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
//探測SQLite數據庫操作
.penaltyLog() //打印logcat
.penaltyDeath()
.build());
}
super.onCreate();
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章