最新的android平台中(android 2.3起),新增加了乙個新的類,叫strictmode(android.os.strictmode)。這個類可以用來幫助開發者改進他們編寫的應用,並且提供了各種的策略,這些策略能隨時檢查和報告開發者開發應用中存在的問題,比如可以監視那些本不應該在主線程中完成的工作或者其他的一些不規範和不好的**。
strictmode有多種不同的策略,每一種策略又有不同的規則,當開發者違背某個規則時,每個策略都有不同的方法去顯示提醒使用者。在本文中,將舉例子說明如何使用在android 中使用 strictmode。
strictmode的策略和規則
目前,有兩大類的策略可供使用,一類是關於常用的監控方面的,另外一類是關於vm虛擬機器等方面的策略。常用的監控方面的策略有如下這些:
disk reads 磁碟讀
disk writes 磁碟寫
network access 網路訪問
custom slow code 自定義的執行速度慢的**分析
而vm方面的策略重點關注如下幾類:
記憶體洩露的activity物件
記憶體洩露的sqlite物件
記憶體洩露的釋放的物件
其中,記憶體洩露的activity物件和記憶體洩露的sqlite物件都比較好理解,而所謂對關閉物件的檢查,主要是去監那些本該釋放的物件,比如應該呼叫close()方法的物件。
當開發者違反某類規則時,每種策略都會有不同的方法令開發者知道當時的情況。相關的違反情況可以記錄在logcat中或者儲存在dropbox中(android.os.dropbox)服務中。而常用監控類的策略還會在當違規情況發生時顯示相關的對話方塊和當時的上下文環境,所有的這些都為了能讓開發者盡快地了解程式的瑕疵,以提交程式的質量。下面分步講解如何使用stritctmode。
第一步 啟用strictmode
為了能在應用中啟用和配置strictmode,開發者最好盡可能在應用程式的生命週期的早段使用,方法是呼叫strictmode的方法setthreadpolicy。當使用常用監控類的時候,乙個最好的呼叫時機,是在應用中入口和activities被呼叫前進行。比如在乙個應用程式中,可以把**放在啟動activity類的oncreate()方法中,下面是乙個**示例,啟用了當前情況
貪心和動規的difference
很多同學在做動規題的時候,很容易做成貪心,的確,動規和貪心是很相近的,在很多時候,動規和貪心沒有明顯的界限,反而在很多時候,我們需要使用貪心的思想,對動規進行優化,不過這也就導致了很多同學分不清什麼題是動規,什麼題是貪心。現在我們來回憶一下,動規的思想是什麼,以前乙個或者多個狀態的最優值,加上現在這...
Redis的 過期策略 和 淘汰策略
惰性過期 被動淘汰 定期過期 redis 中同時使用了惰性過期和定期過期兩種過期策略 redis中定期過期策略演算法大致實現 redis.config中hz定義了servercron任務的執行週期,預設為10,即cpu空閒時每秒執行10次 每次過期key清理的時間不超過cpu時間的25 即若hz 1...
Redis的過期策略和淘汰策略
redis 過期策略都有哪些,有事怎樣刪除的 過期刪除策略 定時刪除 優點 對記憶體最友好的。可以及時釋放鍵所占用的記憶體。缺點 對 cpu 不友好。特別在過期鍵比較多的情況下,刪除過期鍵會占用相當一部分 cpu 時 間。同時在記憶體不緊張,cpu緊張的情況下,將 cpu 用在刪除和當前任務不想關的...