我一直在浏览高效显示位图的安卓开发者网站。
但是我对下面的声明感到困惑,需要一个好的内存缓存技术的建议。下面是链接。
http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
注意:在过去,流行的内存缓存实现是SoftReference或WeakReference位图缓存,但是不建议这样做。从Android2.3 (API级别9)开始,垃圾收集器更积极地收集软/弱引用,这使得它们相当无效。此外,在Android3.0之前(API级别11),位图的备份数据存储在本机内存中,无法以可预测的方式释放,从而可能导致应用程序短暂超过其内存限制并崩溃。
因此,是LRU缓存,是比弱引用/软引用更好的技术,为什么会这样呢?也如何管理不同版本的安卓设备?
请帮助我,并建议最好的技术为同样的。
发布于 2015-10-08 11:47:09
尽管文件没有提到这一点。我们不处理缓存或回收位图的开销,是通过使用第三方受信任的、广泛使用的工具(如毕加索、滑动器或通用图像加载器)进行处理的。请阅读这一点,这是很好的知道,但许多应用程序使用这些
发布于 2015-10-08 11:58:22
关于参考文献
应该清除SoftReference并尽可能晚地排队,也就是说,以防VM有耗尽内存的危险。
一旦已知是弱引用的,WeakReference就可以被清除并排队。
查看这以获得更多信息
使用LRU缓存:为什么它是首选的,简单的答案是因为它是android的一部分。它更喜欢使用LRU缓存作为android最佳实践的一部分。
检查这个Android最佳实践
关于版本控制:它不依赖于android版本(略低于2.3)。但是它取决于设备( LRU缓存的大小不同)。
使用此计算可以在每个设备中找到iin大小。(Android正式提出这个建议)
int memoryClass= ( ( ActivityManager )context.getSystemService( Context.ACTIVITY_SERVICE ) ).getMemoryClass();
int cacheSize = 1024 * 1024 * memoryClass/ 8;发布于 2015-10-08 11:52:39
这取决于您在显示位图时使用的是什么?如果您正在使用库,如volley、picasso、通用图像加载程序和其他库,那么它们可以很好地处理现金转移。如果您不使用这些库,就会有HttpResponseCache。但老实说,我从来没有测试过位图
https://stackoverflow.com/questions/33014777
复制相似问题