有没有什么方法可以使用LargeHeap for v3.x而忽略2.x in Manifest?

Fra*_*ank 3 android manifest android-largeheap

我很想在Manifest中使用Android:LargeHeap ="true"选项来获得额外的内存(我们在高分辨率的1980x1200显示器上处理5+ MB位图,并且很快就会期待更大的显示.

我已经完成了处理Android中用于位图的糟糕内存处理的所有常规技巧(即无法知道碎片内存中是否有足够大的洞,而不是试图祈祷它不会崩溃).我已经花了数周优化,修剪和应用其他技巧来最小化内存并防止崩溃.这是在2.x vs 3.x/4.x中可以完成哪些功能的技巧,但是将它们全部保存在一个应用程序中.无需指出"如何优化位图" - 我已经完成了这些并应用了我能做到的事情.

版本2.x不支持LargeHeap,并且我在2.x中不需要LargeHeap选项的较低分辨率屏幕使用不同的图像.(也没有内存不足问题).

当android:minSdkVersion ="8"时,它根本不允许使用Android:LargeHeap选项.

有没有办法有条件地为包含3.x的系统包含LargeHeap,并在2.x中忽略它?或者如果检测到3.x,应用程序本身是否尝试设置LargeHeap?我找不到任何办法,但也许我忽略了一些技巧.

我也意识到LargeHeap相当糟糕,但我们已经没有其他技巧了.理想情况下,只有在OnCreate程序中真正需要(和允许)时,以编程方式执行LargeHeap会很好.

Com*_*are 5

当android:minSdkVersion ="8"时,它根本不允许使用Android:LargeHeap选项.

是的,它会的.

现在,如果您的构建目标(例如,Properties> Android)设置为API Level 8,则它将无法编译.您需要使用构建目标API级别11或更高版本进行编译.但android:minSdkVersion与它无关.旧设备上只会忽略该选项.

有没有办法有条件地为包含3.x的系统包含LargeHeap,并在2.x中忽略它?

使用android:largeHeap="true"<application>清单中的元素.

或者如果检测到3.x,应用程序本身是否尝试设置LargeHeap?

AFAIK,没有程序化手段来设置它.


Ant*_*one 5

我用这种方法:

在AndroidManifest.xml中

android:largeHeap="@bool/largeheap"
Run Code Online (Sandbox Code Playgroud)

我创建了两个configuration.xml文件

值中的第一个:configuration.xml

<bool name="largeheap">false</bool>
Run Code Online (Sandbox Code Playgroud)

值-v11中的第二个(仅与版本> = 11一起使用)

<bool name="largeheap">true</bool>
Run Code Online (Sandbox Code Playgroud)