目前,我有一段代码,设计用于在Android 2.3和4+中运行
如果android:largeHeap在AndroidManifest.xml中应用代码,代码将执行得更好(大多数情况下它不会有OutOfMemory异常).
<application
android:name=".MyApplication"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:screenOrientation="nosensor"
android:largeHeap="true"
Run Code Online (Sandbox Code Playgroud)
目前,我android:minSdkVersion需要设置为15而不是10(Android 2.3).如果没有,android:largeHeap则在AndroidManifest.xml中不允许.
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="15" />
Run Code Online (Sandbox Code Playgroud)
在单个APK中,我可以设置多少
android:largeHeap如果我在Android 4+中使用选项android:largeHeap如果我在Android 2.3中,请不要使用选项Gle*_*enn 73
您还可以在Honeycomb中禁用大堆并在ICS或JB中启用它.只是一点点hacky或什么的.这是我尝试过的.
在我们继续之前,将Build目标更改为Honeycomb,Jelly Bean或ICS,以便我们可以放置android:largeHeap属性.此外,您可以设置android:minSdkVersion为API 10.
Android API 10不支持大堆.
values-v14在res文件夹中创建一个文件夹bools.xml了values-v14bools.xml的values-v14<bool name="largeheap">true</bool>
values> bools.xml或values-[API VERSION]>的布尔值,用于bools.xml在不同的API版本中禁用大堆,或者默认情况下.
<bool name="largeheap">false</bool>
Run Code Online (Sandbox Code Playgroud)
将值更改android:largeHeap为@bool/largeheap而不是硬编码true或false
<application
android:largeHeap="@bool/largeheap"
android:allowBackup="true"
android:icon="@drawable/ic_launcher">
....
</application>
Run Code Online (Sandbox Code Playgroud)
我通过制作内存泄漏应用程序或只加载一个巨大的位图来测试这段代码,并且,它的工作!
祝好运!
将android:largeHeap="true"属性保留在您的AndroidManifest.xml.对于不支持它的版本,应忽略此项.然后,要支持旧版本,请使用VMRuntime类设置堆大小(如果需要,通过反射).
有关此主题的更多信息:如何增加Android应用程序的堆大小?
| 归档时间: |
|
| 查看次数: |
18663 次 |
| 最近记录: |