4

我的问题是……在这个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 实例中运行。它们不会在其中运行的应用程序中造成任何类型的内存压力..这就是我所知道的..如果这是正确的..那么我可以声明任何大小的硬缓存?我对这个缓存了解不多..如果我错了,请纠正我..

4

1 回答 1

0

您的设备具有固定数量的内存,在所有应用程序之间共享。为了给前台进程所需的内存,Android 将杀死缓存的后台进程。具有高内存占用的应用程序在处理多任务时会更慢,因为其他应用程序需要从头开始创建。

对称地,具有高内存占用的应用程序也将比不使用那么多内存的应用程序更早地被杀死。毕竟,杀死这些应用程序将释放更多内存。

您应该选择产生良好性能的最小缓存大小。任何更大的东西都会浪费内存并减慢设备速度。

于 2012-04-16T11:43:16.447 回答