我正在开发一个图形应用程序,我想为其保留一组用于撤消操作的位图。位图非常大,每个大约 9M,所以我意识到在任何给定时间我只能在内存中保留一些。
我想提前算出我能有多少。
我尝试了各种查询可用内存的方法,并且在不需要位图时小心回收位图,但尽管该应用程序似乎因 EOutOfMemory 而崩溃。
我不想缩小位图,也不想使用 RGB565。我只是想要一种相当可靠的方法来确定我可以允许多少撤消步骤。
谢谢
编辑#1
我继续尝试各种确定可用内存的方法,包括评论中链接的方法,但仍然遇到问题。
奇怪的是,我的旧三星 I9000 手机在创建和访问大量每个 9MB 大小的位图时没有太多问题,但是我较新的三星 Tab 3 在分配第三个时死掉了。
它应该有足够的可用内存。我确实读过一些关于在 Android 3 及更高版本上为位图分配内存的位置存在差异的内容,但并不完全理解。这可能是导致我的 Tab 因 EOutOfMemory 而死的原因吗?
编辑#2
无奈之下,我决定在清单中打开largeHeap。我知道不建议这样做,但它使 Tab 3 的行为更具可预测性,并且可能说明了一些潜在问题。