0

我正在开发墙纸应用程序。我将所有图像都存储在 Drawable 文件夹中。

OutOfMemoryError当我添加超过 30 张壁纸时,我得到了。我想知道如何克服这一点。

我应该保存我所有的图像SQLite Database然后从那里加载还是我必须做其他事情。

我尝试通过调整位图大小,Decode Bitmap Factory但由于图像质量降低,它没有达到我的目的。

4

3 回答 3

1

在解码时调整图像大小只会让您OutOfMemoryError及时前进。该错误意味着您的应用程序泄漏了内存,或者试图使用比可用内存更多的内存。在 Android 上处理位图时,这种情况经常发生,因为限制设置在 25MB 左右,并且高分辨率屏幕越来越普遍。

您必须重新设计您的应用程序。没有必要在内存中保留 30 张图像,因为它们无法容纳在单个屏幕中 - 好吧,如果它们是缩略图大小,则在解码时调整它们的大小,并且内存中的像素总数与一张大图,这样您就不会耗尽内存。

recycle()当位图不可见时,您必须找到一种方法。如果您更好地描述您的应用程序,我们可以帮助您找到合适的时机,还可以预加载图像以获得响应式应用程序和更好的用户体验。

于 2012-12-26T18:34:45.533 回答
0

我认为您需要做的是Thumbnails在屏幕上显示而不是可绘制的图像。您可以根据您的尺寸要求生成缩略图和显示。并且每当用户单击时Thumb,只需采用原始路径并设置壁纸。

另一种选择是您可以使用通用图像加载器,它可以帮助您将图像缓冲在磁盘中(如SD card或您的应用程序的Internal memory)。这样问题Out of Memory就可以解决了。

于 2012-12-29T08:47:10.333 回答
-1

如果您想控制应用程序的崩溃,请在Exception块中编写代码:

try {

    ...

    }
    catch(OutOfMemoryError error)  {
        //decide what to do when there is not more memory available
    }

也请这个链接:

关联

于 2012-12-29T08:55:47.567 回答