Android provides LRU cache, that is to evict the least recently used item from the data.
https://developer.android.com/reference/android/util/LruCache.html
1. The size of the cache can be adjusted like the following (depends on the purpose of having cache and the resolution of the devices):
// Cache Size ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); int availableMemoryInBytes = am.getMemoryClass() * 1024 * 1024; // Need to adjust size LruCache bitmapCache = new LruCache(availableMemoryInBytes / 8);
2. In the example we need to override sizeOf() methods with bitmap size
public class MyCache extends LruCache(String, Bitmap) {
@Override
protected int sizeOf(String Key, Bitmap value) {
// return the size of the in-memory bitmap
// counted against maxSizeBytes
return value.getByteCount();
}
...
}
3. The usage of the LRU cache:
Bitmap bitmap = mCache.get(filename);
if (bitmap == null) {
bitmap = BitmapFactory.decodeFile(filename);
mCache.put(filename, bitmap );
}
댓글 없음:
댓글 쓰기