我正在开发墙纸应用程序。我将所有图像都存储在 Drawable 文件夹中。
OutOfMemoryError当我添加超过 30 张壁纸时,我得到了。我想知道如何克服这一点。
我应该保存我所有的图像SQLite Database然后从那里加载还是我必须做其他事情。
我尝试通过调整位图大小,Decode Bitmap Factory但由于图像质量降低,它没有达到我的目的。
我正在开发墙纸应用程序。我将所有图像都存储在 Drawable 文件夹中。
OutOfMemoryError当我添加超过 30 张壁纸时,我得到了。我想知道如何克服这一点。
我应该保存我所有的图像SQLite Database然后从那里加载还是我必须做其他事情。
我尝试通过调整位图大小,Decode Bitmap Factory但由于图像质量降低,它没有达到我的目的。
在解码时调整图像大小只会让您OutOfMemoryError及时前进。该错误意味着您的应用程序泄漏了内存,或者试图使用比可用内存更多的内存。在 Android 上处理位图时,这种情况经常发生,因为限制设置在 25MB 左右,并且高分辨率屏幕越来越普遍。
您必须重新设计您的应用程序。没有必要在内存中保留 30 张图像,因为它们无法容纳在单个屏幕中 - 好吧,如果它们是缩略图大小,则在解码时调整它们的大小,并且内存中的像素总数与一张大图,这样您就不会耗尽内存。
recycle()当位图不可见时,您必须找到一种方法。如果您更好地描述您的应用程序,我们可以帮助您找到合适的时机,还可以预加载图像以获得响应式应用程序和更好的用户体验。
如果您想控制应用程序的崩溃,请在Exception块中编写代码:
try {
...
}
catch(OutOfMemoryError error) {
//decide what to do when there is not more memory available
}
也请这个链接: