我正在开发墙纸应用程序。我将所有图像都存储在 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
}
也请这个链接: