Android Image缓存 - 怎么样?

Dan*_*ail 8 android image-caching

我认为之前有人询问过,但仍有一些我无法理解的事情.

我尝试了两种不同的方法:

  1. 将所有图像保存在内存中,当某个限制开始超过时,开始删除它们
  2. 让Android使用SoftReferences修复此问题

在2.它只是清理它们有时第二次我分配它们!而且我没有分配太多 - 30-40张50x50像素的图像.

所以我坚持一个.问题是限制是什么?

  1. 我可以从设备上获得一些可靠的信息吗?我还剩下多少位图内存?我做了一些研究,观察DDMS值,它只是占用了越来越多的空间(如果我不清理),直到它爆炸.有一刻只剩下200K了,接下来系统再提供2M ......
  2. 我目前正在使用一些基于设备模型或屏幕大小的启发式决策.从长远来看,我认为这是死路一条.在某些手机上有内存异常,在其他手机上完全免费.
  3. 有第三种解决方案,正确吗?

dus*_*ine 8

最重要的问题:你在做recycle()你的位图吗?这对于姜饼之前的应用非常重要(也许是后姜饼).

从Google I/O 2011观看Android应用程序内存管理会话帮助我更好地了解了Android开发的特点.

那个视频提到了一个名为MAT的工具- 一个内存分析器 - 它可以用来确定你的内存中是否有被泄漏的对象.你可能有超过你认为的30-40.

为了查看和/或记录堆的当前大小等,我建议使用此答案中关于Android Out of Memory异常的代码.