歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android 2.3 StrictMode 使用

ANR窗口產生的原因是多種多樣的。程序的主線程因為IO讀寫或網絡阻塞而導致被阻塞了,外部存儲設備被獨占了或系統負荷(load)過高(即不是自己編寫的程序的問題,可能是系統或者其他第三方程序導致的問題),都有可能導致ANR窗口的出現。

從Android 2.3開始提供了一個新的類StrictMode,可以幫助開發者改進他們的Android應用,StrictMode可以用於捕捉發生在應用程序主線程中耗時的磁盤、網絡訪問或函數調用,可以幫助開發者使其改進程序,使主線程處理UI和動畫在磁盤讀寫和網絡操作時變得更平滑,避免主線程被阻塞,導致ANR窗口的發生。

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

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

Copyright © Linux教程網 All Rights Reserved