首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >最佳内存缓存技术

最佳内存缓存技术
EN

Stack Overflow用户
提问于 2015-10-08 11:42:47
回答 3查看 659关注 0票数 1

我一直在浏览高效显示位图的安卓开发者网站。

但是我对下面的声明感到困惑,需要一个好的内存缓存技术的建议。下面是链接。

http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html

注意:在过去,流行的内存缓存实现是SoftReference或WeakReference位图缓存,但是不建议这样做。从Android2.3 (API级别9)开始,垃圾收集器更积极地收集软/弱引用,这使得它们相当无效。此外,在Android3.0之前(API级别11),位图的备份数据存储在本机内存中,无法以可预测的方式释放,从而可能导致应用程序短暂超过其内存限制并崩溃。

因此,是LRU缓存,是比弱引用/软引用更好的技术,为什么会这样呢?也如何管理不同版本的安卓设备?

请帮助我,并建议最好的技术为同样的。

EN

回答 3

Stack Overflow用户

发布于 2015-10-08 11:47:09

尽管文件没有提到这一点。我们不处理缓存或回收位图的开销,是通过使用第三方受信任的、广泛使用的工具(如毕加索、滑动器或通用图像加载器)进行处理的。请阅读这一点,这是很好的知道,但许多应用程序使用这些

票数 2
EN

Stack Overflow用户

发布于 2015-10-08 11:58:22

关于参考文献

应该清除SoftReference并尽可能晚地排队,也就是说,以防VM有耗尽内存的危险。

一旦已知是弱引用的,WeakReference就可以被清除并排队。

查看以获得更多信息

使用LRU缓存:为什么它是首选的,简单的答案是因为它是android的一部分。它更喜欢使用LRU缓存作为android最佳实践的一部分。

检查这个Android最佳实践

关于版本控制:它不依赖于android版本(略低于2.3)。但是它取决于设备( LRU缓存的大小不同)。

使用此计算可以在每个设备中找到iin大小。(Android正式提出这个建议)

代码语言:javascript
运行
复制
int memoryClass= ( ( ActivityManager )context.getSystemService( Context.ACTIVITY_SERVICE ) ).getMemoryClass();
int cacheSize = 1024 * 1024 * memoryClass/ 8;
票数 1
EN

Stack Overflow用户

发布于 2015-10-08 11:52:39

这取决于您在显示位图时使用的是什么?如果您正在使用库,如volley、picasso、通用图像加载程序和其他库,那么它们可以很好地处理现金转移。如果您不使用这些库,就会有HttpResponseCache。但老实说,我从来没有测试过位图

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33014777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档