我想使用内存缓存(LruCache)而不是DiskLruCache来缓存图像。我对android中的图像缓存有一些疑问。
如何检查Lrucache中的可用内存大小?
当缓存请求越过Lrucache中的可用内存时会发生什么?
LruCache对象是否保留在dalvik堆内存中?或缓存完成保存在堆内存中?
答案 0 :(得分:1)
回答第一个问题:
private LruCache<String, Bitmap> mMemoryCache;
//...
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
int availMemInBytes = am.getMemoryClass() * 1024 * 1024;
回答第二个问题:
将从列表中删除最近最少使用的对象。将移除一个或多个对象,直到有足够的空间放置新对象。
关于第三个问题我认为我迟到了,因为Dalvik不再用于Android&gt; 4.4.2。也许这个视频可以帮助弄清楚新ART会发生什么 https://www.youtube.com/watch?list=PLOU2XLYxmsIJDPXCTt5TLDu67271PruEk&t=47&v=R5ON3iwx78M
我希望它会有所帮助。