我有一个Android应用程序,它使用很多内存进行像素操作。而我注意到的是android不会杀死程序或释放内存而支持前台应用程序。而我的应用程序崩溃没有足够的内存错误。现在我让它自动检测剩余多少内存并适当缩放图片。这样可以防止崩溃,但会导致图像质量不佳。
有没有办法告诉Android操作系统,释放内存,因为我的应用程序是内存饥渴。根据我从android中读到的内容,操作系统应该自动执行此操作。但似乎并没有这样做。也许我错过了什么? iPhone似乎处理得更好。
答案 0 :(得分:1)
Android应用程序具有硬Java堆限制,因设备而异。 24MB是典型金额。
因此,显而易见的解决方法是不在Java中分配大对象......您可以使用本机C方法对像素字节数组进行malloc操作。
然而24MB应该足以让任何人借用一个短语,所以我建议你尝试重新思考你的方法。也许更积极地重用固定大小的池中的位图,将图像分解成更小的图块等等。
答案 1 :(得分:0)
避免过多使用getPixel()
和setPixel()
,因此会导致非常糟糕的性能,这已在Android文档中提及过。
此外,管理您自己的内存使用情况Java,Garbage Collector
只要您遵守规则就会运行。