我想使用内存缓存(LruCache)而不是DiskLruCache来缓存图像。我对android中的图片缓存有些疑问。

如何查看Lrucache中的可用内存大小?

当缓存请求越过Lrucache中的可用内存时会发生什么?

LruCache对象是否保留在dalvik堆内存中?还是缓存完成后保存在堆内存中?

最佳答案

回答第一个问题:

    private LruCache<String, Bitmap> mMemoryCache;
    //...
    ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    int availMemInBytes = am.getMemoryClass() * 1024 * 1024;


对第二个答案:

最近使用最少的对象将从列表中删除。一个或多个对象将被删除,直到有足够的空间放置新对象为止。

关于第三个问题,我认为我已经迟到了,因为Dalvik不再用于Android 4.4.2以上的版本。也许这段视频可以帮助您了解新ART的情况
https://www.youtube.com/watch?list=PLOU2XLYxmsIJDPXCTt5TLDu67271PruEk&t=47&v=R5ON3iwx78M

希望对您有所帮助。

08-05 14:59