android使用内存缓存图片
时间: 2023-12-25 10:06:41 浏览: 82
在 Android 中使用内存缓存图片,可以使用 LruCache 或自定义实现的内存缓存。
1. LruCache
LruCache 是 Android 提供的一个可以回收不常用的 Bitmap 对象的缓存类,它的大小是通过构造函数中传入的 maxsize 来指定的。
以下是使用 LruCache 的示例代码:
```
public class ImageCache {
private LruCache<String, Bitmap> mMemoryCache;
public ImageCache() {
int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
int cacheSize = maxMemory / 8; // 可以根据需求进行调整
mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {
@Override
protected int sizeOf(String key, Bitmap bitmap) {
// 返回 Bitmap 对象的大小,单位为 KB
return bitmap.getByteCount() / 1024;
}
};
}
public void addToMemoryCache(String key, Bitmap bitmap) {
if (getFromMemoryCache(key) == null) {
mMemoryCache.put(key, bitmap);
}
}
public Bitmap getFromMemoryCache(String key) {
return mMemoryCache.get(key);
}
}
```
2. 自定义实现的内存缓存
自定义实现的内存缓存可以根据需求进行调整和优化,以下是一个简单的示例代码:
```
public class ImageCache {
private Map<String, Bitmap> mMemoryCache;
public ImageCache() {
mMemoryCache = new HashMap<String, Bitmap>();
}
public void addToMemoryCache(String key, Bitmap bitmap) {
if (getFromMemoryCache(key) == null) {
mMemoryCache.put(key, bitmap);
}
}
public Bitmap getFromMemoryCache(String key) {
return mMemoryCache.get(key);
}
}
```
使用内存缓存时,需要注意内存泄漏的问题,可以在 Activity 或 Fragment 的 onDestroy() 方法中释放缓存。
阅读全文