实现用于缓存位图图像的 LruCache
Implementing LruCache for caching bitmap images
在我的应用程序中,我正在从 Internet 获取提要。提要包含一些文本信息和图像。我必须将图像存储在 LruCache 中,为此我参考了 Google developer 网站并按照其中所示实施。这个实现工作正常。但是由于我的应用程序支持 api 级别 10,它显示了一些错误分配缓存大小,我无法声明缓存正弦的大小我正在使用 bitmap.getByteCount() 它显示添加 @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
符号,
当我在 android 中打开应用程序时 2.3 应用程序停止响应
代码
import android.support.v4.util.LruCache;
private LruCache<String,Bitmap> mMemoryCache;
onCreate(Bundle savedInstanceState){
manageCache();
}
private void manageCache() {
mMemoryCache = new LruCache<String, Bitmap>(mCacheSize) {
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
@Override
protected int sizeOf(String key, Bitmap bitmap) {
return bitmap.getByteCount() / 1024;
}
};
}
我怎样才能支持 api 级别 10,有什么办法吗?
要计算 API 级别 12 之前位图的内存大小,您可以使用此代码:
int bitmapSize = bitmap.getRowBytes() * bitmap.getHeight();
所以方法 sizeOf
将如下所示:
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
@Override
protected int sizeOf(String key, Bitmap bitmap) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) {
return bitmap.getByteCount();
} else {
return bitmap.getRowBytes() * bitmap.getHeight();
}
}
P.S。您必须 return 位图的大小(以字节为单位),因此您不能将 bitmap.getByteCount() 除以 1024。
在我的应用程序中,我正在从 Internet 获取提要。提要包含一些文本信息和图像。我必须将图像存储在 LruCache 中,为此我参考了 Google developer 网站并按照其中所示实施。这个实现工作正常。但是由于我的应用程序支持 api 级别 10,它显示了一些错误分配缓存大小,我无法声明缓存正弦的大小我正在使用 bitmap.getByteCount() 它显示添加 @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
符号,
当我在 android 中打开应用程序时 2.3 应用程序停止响应
代码
import android.support.v4.util.LruCache;
private LruCache<String,Bitmap> mMemoryCache;
onCreate(Bundle savedInstanceState){
manageCache();
}
private void manageCache() {
mMemoryCache = new LruCache<String, Bitmap>(mCacheSize) {
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
@Override
protected int sizeOf(String key, Bitmap bitmap) {
return bitmap.getByteCount() / 1024;
}
};
}
我怎样才能支持 api 级别 10,有什么办法吗?
要计算 API 级别 12 之前位图的内存大小,您可以使用此代码:
int bitmapSize = bitmap.getRowBytes() * bitmap.getHeight();
所以方法 sizeOf
将如下所示:
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
@Override
protected int sizeOf(String key, Bitmap bitmap) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) {
return bitmap.getByteCount();
} else {
return bitmap.getRowBytes() * bitmap.getHeight();
}
}
P.S。您必须 return 位图的大小(以字节为单位),因此您不能将 bitmap.getByteCount() 除以 1024。