我使用 LRU 缓存来缓存位图图像。我使用典型的代码来实现这些,它在冰淇淋三明治上运行良好。
但是,缓存过程不适用于 Gingerbread。
这是我的代码:
import android.support.v4.util.LruCache;
(...)
public class ThumbnailDownloader<Token> extends HandlerThread {
(...)
private static final String TAG = "ThumbnailDownloader";
private LruCache<String, Bitmap> mMemoryCache;
(...)
public void addBitmapToMemoryCache(String key, Bitmap bitmap) {
if (getBitmapFromMemCache(key) == null) {
Log.i(TAG, "(Before)Cache size: " + ((Integer)mMemoryCache.size()).toString());
mMemoryCache.put(key, bitmap);
Log.i(TAG, "(After)Cache size: " + ((Integer)mMemoryCache.size()).toString());
Bitmap cached = mMemoryCache.get(key);
if (cached == null) {
Log.i(TAG, "Fail to cache!");
} else {
Log.i(TAG, "Cached item: " + (String)cached.toString());
}
}
}
(...)
}
此代码在冰淇淋三明治上运行良好。例如,当第一次缓存发生时,输出为:
02-18 10:59:42.505: I/ThumbnailDownloader(2691): (Before)Cache size: 0
02-18 10:59:42.505: I/ThumbnailDownloader(2691): (After)Cache size: 77
02-18 10:59:42.505: I/ThumbnailDownloader(2691): Cached item: android.graphics.Bitmap@4298cc38
但是,在 Gingerbread 上的结果不同:(缓存大小没有改变)
02-18 10:59:03.209: I/ThumbnailDownloader(13652): (Before)Cache size: 0
02-18 10:59:03.209: I/ThumbnailDownloader(13652): (After)Cache size: 0
02-18 10:59:03.209: I/ThumbnailDownloader(13652): Fail to cache!
此项目未缓存。
我试图扩展缓存内存大小,但结果没有改变。
如何解决这个问题呢?