??????????????
???????漼???????????????????ж????????????????????????Щ?????????????????????Щ???????????????????????????????????????????????????????????????????в????????????????????????????????????????????????????в???????????????????????????????????????к????????????е?????????棬???????????
??????????????棿
?????л??????????????δ????????????????????????????????????????????豸?????????????????????????????????????????????????????????????????????????濼????ó????????????檔
????Android?е???????????Щ???????????
????Android?豸?????????????????????????棬?????????豸??????У???????????棬????????????????????????????洢??????????????sd???????????????и????????滺?????????????????????????????????????????棬???????????????????????????????????????????????????????????????????????????????????(??????滺?????)???????????
??????滺?棺
??????Android?й?????????LruCache?????滺?棬LruCache??????????LinkedHashMap( ????????LinkedHashMap????????????б???????????????LruCache??????????????????????????)?????汣??????????????????????????????????????????????????????????????????β??????????????????????gc????????????????????LruCache????????????????????????????OOM????????С??????????????á?google??????????????????ο???
????????LruCache??С????????????????????ж??
????????????????????????ж?????????????????????????
?????????????????????磬 ?????????????????dpi???????????????????
???????????????????????????????????С??
???????????????????????????????Щ????????????????????????????????·LruCache???????棬????????????????????LruCache?У?
?????????????????????????????Щ?????????????????????????????????????????????????????
?????????????LruCache??С??????????????С?????嵽????л???????????
??????????????????LruCache???????
????private LruCache<String?? Bitmap> mMemoryCache;//??????????
????final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);//???????????е????????
????//????1/8?????????????????
????final int cacheSize = maxMemory / 8;
????mMemoryCache = new LruCache<String?? Bitmap>(cacheSize) {
????@Override
????protected int sizeOf(String key?? Bitmap bitmap) {
????//??дsizeOf????????????????????????????????????????????????????
????return bitmap.getByteCount() / 1024;
????}
????};
??????????????????????????
????intcacheSize=4*1024*1024;// 4MiB
????LruCachebitmapCache=newLruCache(cacheSize){
????protectedintsizeOf(Stringkey??Bitmapvalue){
????returnvalue.getByteCount();
????}
????}
??????????sizeOf???????????????????????£??????????д????????????????????????????????????????????????λ???cacheSize?????
???????
??????????????????????滺??LruCache?????????????????
????LruCache?????LinkedHashMap??????LRU(Least Recently Used ?????????)?????????
????LruCache???trimToSize???????????????????????
????LruCache??????????? LinkedHashMap?????
????LruCache??????? LinkedHashMap?????????
???????LruCache??????????дsizeOf??????????????????????С????put??get?????????safeSizeOf(K key?? V value)??safeSizeOf(K key?? V value)????? sizeOf (K key?? V value)???????????????1??