我的问题是......在这个ImageDownloader中,他们将缓存实现为硬缓存和软缓存..以及硬缓存......其他
// Hard cache, with a fixed maximum capacity and a life duration
private final HashMap<String, Bitmap> sHardBitmapCache =
new LinkedHashMap<String, Bitmap>(HARD_CACHE_CAPACITY / 2, 0.75f, true) {
@Override
protected boolean removeEldestEntry(LinkedHashMap.Entry<String, Bitmap> eldest) {
if (size() > HARD_CACHE_CAPACITY) {
// Entries push-out of hard reference cache are transferred to soft reference cache
sSoftBitmapCache.put(eldest.getKey(), new SoftReference<Bitmap>(eldest.getValue()));
return true;
} else
return false;
}
};
他们正在设置硬缓存的最大容量值..现在如果我选择一些大的值作为最大容量会发生什么??我的意思是..它会影响其他应用程序运行,因为我的应用程序占用大量内存.. 其他应用程序将在完全独立的dalvik实例中运行。它们不会在运行的应用程序中引起任何内存压力.. 这就是我所知道的......如果这是正确的..那么我可以声明我的任何大小的硬缓存吗?我不知道很多关于这个缓存..如果我错了,请纠正我..
答案 0 :(得分:0)
您的设备具有固定数量的内存,在所有应用程序之间共享。为了给前台进程提供所需的内存,Android将终止缓存的后台进程。具有高内存占用的应用程序将更难以执行多任务,因为其他应用程序将需要从头开始创建。
对称地,具有高内存占用量的应用程序也将比不使用尽可能多内存的应用程序更早被杀死。毕竟,杀死这些应用程序将释放更多内存。
您应该选择产生良好性能的最小缓存大小。任何更大的内容都会浪费内存并降低设备速度。