我很想在 Manifest 中使用Android:LargeHeap="true"选项来获得一些额外的内存(我们正在处理 5+ MB 高分辨率 1980x1200 显示器上的位图,并期望很快会有更大的显示器。
我已经用完了所有正常的技巧来处理Android中位图的糟糕内存处理(即除了尝试祈祷它不会崩溃之外,没有办法知道碎片内存中是否有足够大的洞)。我已经花了数周时间优化、修整和应用其他技巧来最小化内存并防止崩溃。这是 2.x 与 3.x/4.x 中可以完成哪些功能的技巧,但将所有功能都保存在一个应用程序中。无需指出“如何优化位图”——我已经完成了这些并应用了我能做的。
2.x 版本不支持 LargeHeap,我将不同的图像用于在 2.x 中不需要 LargeHeap 选项的低分辨率屏幕。(也没有内存不足的问题)。
当 android:minSdkVersion="8" 时,它根本不会允许 Android:LargeHeap 选项。
有什么方法可以有条件地为 3.x 的系统包含 LargeHeap,而在 2.x 中忽略它?或者如果检测到 3.x,应用程序本身是否会尝试设置 LargeHeap?我找不到任何方法来做到这一点,但也许我忽略了一些技巧。
我也意识到 LargeHeap 相当糟糕,但我们已经没有其他技巧了。理想情况下,以编程方式执行 LargeHeap 会很好,只有在 OnCreate 程序真正需要(并允许)时。