今天了解到了一個android輕量級的開源緩存框架,(github:https://github.com/yangfuhai/ASimpleCache),花了一點時間研究了一下源代碼,大概的思路就是每個緩存目錄對應一個Acache類,通過mInstanceMap關聯(個人覺得這個主要是減少對象的創建吧,源碼上用的hashmap,不過我感覺可以用weakmap), 這個框架可以設定緩存的時間,其實就是每個緩存對應一個文件,緩存文件的格式為 “寫入內容時的時間-設置的緩存時間(mSeparator)緩存內容”, mSeparator為定義的分割符,每次讀緩存的時候會解析這個格式,從而獲得緩存存入的時間和設定的有效期限,如果讀緩存時的系統時間>寫入緩存時的時間+緩存設置的時間,那么就認為緩存過期,刪除這個緩存文件,然后返回null,反之則返回具體內容, 這個框架封裝的蠻好的,不過有個地方比較坑,就是acache.getAsString()方法,里面的實現用的FileReader和bufferedReader,導致字符串的換行符沒有了,并且當字符串很多時這段代碼的效率很低,我測試了9000行的緩存,結果讀了超過7秒,后來我把這改成了FileInputStream的方式,結果效率明顯提高了0.0..,不過這些都是小問題,Acache里面提供了很多方法,可以緩存bitmap, object, 等等, 框架介紹是線程安全的,但是我沒有看明白為何(大概我還遠遠不過吧)?
? 總之今天看這個開源框架收獲蠻多的,作者寫代碼的方式思路給我提供了一些靈感,在這向所有具有開源精神的人表示感謝!今天還順便復習了一下java的強軟弱虛。
每天進步一點點~