Enable android:largeHeap in Android 4, and disable it in Android 2.3

android

Solution

You can also disable large heap in Honeycomb and enable it in ICS or JB. Just a little hacky or something. Here's what I tried.

Before we proceed, change your Build target to Honeycomb, Jelly Bean or ICS so we can put `android:largeHeap` attribute. Also, you can set `android:minSdkVersion` to `API 10`.

Android `API 10` doesn't support large heap.

- Create a folder `values-v14` in `res` folder

- I created `bools.xml` in `values-v14`

- Put this value in `bools.xml` of `values-v14`

`<bool name="largeheap">true</bool>`

boolean value for `values` > `bools.xml` or `values-[API VERSION]` > `bools.xml` to disable large-heap in different API Version or by default.

<bool name="largeheap">false</bool>

Change the value of `android:largeHeap` to `@bool/largeheap` instead of hardcoded `true` or `false`

<application
        android:largeHeap="@bool/largeheap"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher">
                ....
</application>

I tested this code by making a memory leak application or just load a Huge bitmaps, and, its working!

Good Luck!

Problem

Currently, I have a piece of code, which is designed to run both in Android 2.3 and 4+ The code will perform much better (Where it will not have OutOfMemory exception most of the time), if `android:largeHeap` is being applied in AndroidManifest.xml. ``` <application android:name=".MyApplication" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:screenOrientation="nosensor" android:largeHeap="true" ``` Currently, my `android:minSdkVersion` need to set to 15 instead of 10 (Android 2.3). If not, `android:largeHeap` is not allowable in AndroidManifest.xml. ``` <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="15" /> ``` Within single APK, how possible I can set - Use `android:largeHeap` option if I were in Android 4+ - Do not use `android:largeHeap` option if I were in Android 2.3

Original source

Related problems