如何防止android中的内存不足错误

时间:2011-04-05 07:35:20

标签: android

我是android的新手,我正在开发一个应用程序,我在其中从可绘制数组中的服务器下载图像。一切都是正确的,但是当活动(其中drawables在线程中逐个下载)加载时,一段时间后它会给出内存错误。

请帮忙。

2 个答案:

答案 0 :(得分:1)

尝试使用流而不是立即加载它并使用SoftReference。并阅读http://davidjhinson.wordpress.com/2010/05/19/scarce-commodities-google-android-memory-and-bitmaps/

答案 1 :(得分:1)

  1. 这不是你的内存泄漏,你只是试图将更多的图像同时放入内存而不是适合
  2. 为了解决这个问题,你也可以
    • 使用SoftReference<Drawable>数组,将每个drawable存储在数组new SoftReference(myDrawable)中。检索SoftReference时,请检查SoftReference.get()是否为空。如果为null,则可以通过垃圾收集器(GC)回收drawable,并且需要将其重新下载到内存中,如果它不为null,则SoftReference.get()将返回存储在SoftReference中的drawable。
    • 将数组的大小限制为适合内存的数量。如果数组已达到它,你将不得不实现一些存储新图像的系统; s最大尺寸(例如将新图像放在数组的末尾并删除数组的第一个元素)
  3. SoftReferences允许GC在遇到低内存情况时回收对象占用的内存。