RecyclerView 图片复用
RecyclerView image reuse
我有一个应用程序可以在 recyclerview 中重复使用图像。我想知道重复使用相同图像来节省资源的最佳方法。我对内存使用的了解充其量是 none。
我有一张图片会根据其在应用程序中的使用进行缩放,但在列表中显示相同图片的最佳方式是什么。图像内存是重新用于其中任何一个,还是每个图像分别占用一块内存。有没有更好的办法?
pholder.nodeImage.setImageBitmap(Tools.decodeSampledBitmapFromResource(context.getResources(),R.drawable.folder,50,50));
or
pholder.nodeImage.setImageResource(R.drawable.folder);
把你的图片放在缓存里,你可以使用LruCache class
图像在应用程序生命周期中被缓存,并在应用程序存在时被丢弃。您可以根据要缓存的图像的预期数量、它们的大小以及应用 运行 所在的设备来调整缓存大小。
int cacheSize = 4 * 1024 * 1024; // 4MiB
LruCache bitmapCache = new LruCache(cacheSize) {
protected int sizeOf(String key, Bitmap value) {
return value.getByteCount();
}
}
synchronized (cache) {
if (cache.get(key) == null) {
cache.put(key, value);
}
}
我有一个应用程序可以在 recyclerview 中重复使用图像。我想知道重复使用相同图像来节省资源的最佳方法。我对内存使用的了解充其量是 none。
我有一张图片会根据其在应用程序中的使用进行缩放,但在列表中显示相同图片的最佳方式是什么。图像内存是重新用于其中任何一个,还是每个图像分别占用一块内存。有没有更好的办法?
pholder.nodeImage.setImageBitmap(Tools.decodeSampledBitmapFromResource(context.getResources(),R.drawable.folder,50,50));
or
pholder.nodeImage.setImageResource(R.drawable.folder);
把你的图片放在缓存里,你可以使用LruCache class 图像在应用程序生命周期中被缓存,并在应用程序存在时被丢弃。您可以根据要缓存的图像的预期数量、它们的大小以及应用 运行 所在的设备来调整缓存大小。
int cacheSize = 4 * 1024 * 1024; // 4MiB
LruCache bitmapCache = new LruCache(cacheSize) {
protected int sizeOf(String key, Bitmap value) {
return value.getByteCount();
}
}
synchronized (cache) {
if (cache.get(key) == null) {
cache.put(key, value);
}
}