2

我使用 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!

此项目未缓存。

我试图扩展缓存内存大小,但结果没有改变。

如何解决这个问题呢?

4

0 回答 0