【问题标题】:LruCache returns nullLruCache 返回 null
【发布时间】:2016-03-09 02:23:32
【问题描述】:

当我尝试使用它们的键检索它们时,我有以下代码来缓存位图。他们总是返回 null 。请帮我 。谢谢你

 final int memClass = ((ActivityManager) mcontext.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass();
    final int cacheSize =  1024 *  1024 *memClass ;
    Toast.makeText(mcontext,"Max Cache "+cacheSize,Toast.LENGTH_LONG).show();
    mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {
        @Override
        protected int sizeOf(String key, Bitmap bitmap) {
            // The cache size will be measured in kilobytes rather than
            // number of items.
            return bitmap.getByteCount() / 1024;
        }
    };

获取和设置缓存的函数

 public void addBitmapToMemoryCache(String key, Bitmap bitmap) {
    if (getBitmapFromMemCache(key) == null) {
        Toast.makeText(mcontext,"CEO "+key+" - "+bitmap,Toast.LENGTH_LONG).show();
        mMemoryCache.put(key, bitmap);
    }
    else
    {
        Toast.makeText(mcontext,"NULL",Toast.LENGTH_LONG).show();
    }
}

public Bitmap getBitmapFromMemCache(String key) {
    return mMemoryCache.get(key);
}

-----------更新----------------------------------- ------ 好吧,经过一些调试发现它正在插入值,但是在我退出应用程序后我无法访问它。当我尝试重新启动应用程序时,缓存会丢失。请有人可以帮助我如何保留该价值。谢谢你

【问题讨论】:

    标签: android caching android-bitmap android-lru-cache


    【解决方案1】:

    我可能是错的,但据我了解,缓存是为了在您的 RAM 中保留一些数据以消除 CPU 的电荷。缓存在应用程序生命周期内累积(多次加载相同的照片等)。应用被击落后清除缓存是正常行为。

    【讨论】:

    • 好吧,如果我想在退出应用程序后使用缓存数据,我的选择是什么
    猜你喜欢
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 2014-09-15
    • 2020-06-19
    • 2011-10-15
    相关资源
    最近更新 更多