当我尝试使用其密钥检索位图时,我有以下代码来缓存位图。它们总是返回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);
}
----------- UPDATE ----------------------------------- ------ 好吧经过一些调试发现它正在插入值,但我退出应用程序后无法访问它。当我尝试重新启动应用程序时,缓存丢失。请有人帮助我如何保留这个价值。谢谢
答案 0 :(得分:1)
我可能错了,但是从我的调查结果来看,缓存是为了保留RAM中的一些数据以从CPU中移除电荷。缓存在应用程序生命周期内累积(多次加载相同的照片等)。在应用程序被击落后清除缓存是正常行为。