Answers:
您可以使用android:largeHeap =“ true”来请求更大的堆大小,但这不适用于任何之前的Honeycomb设备。在2.3版之前的设备上,您可以使用VMRuntime类,但在Gingerbread及更高版本上将无法使用。
具有最大限制的唯一方法是通过NDK执行内存密集型任务,因为NDK不会像SDK那样施加内存限制。
或者,您只能加载当前正在查看的模型零件,然后根据需要加载其余零件,同时从内存中删除未使用的零件。但是,这可能无法实现,具体取决于您的应用程序。
largeHeap=trueFTW
有没有办法增加应用程序可以使用的内存大小?
在API级别11+ android:largeHeap="true"上运行的应用程序可以<application>在清单中的元素上请求一个比正常大的堆大小,并且getLargeMemoryClass()on ActivityManager会告诉您该堆有多大。然而:
这仅适用于API级别11+(即Honeycomb及更高版本)
无法保证大堆的大小
用户将感知到您的大堆请求,因为这将迫使其他应用退出RAM,终止其他应用的进程以释放系统RAM供您的大堆使用
由于#3的原因,而且我希望它android:largeHeap会被滥用,因此将来可能会放弃对此的支持,或者可能会在安装时向用户发出警告(例如,您需要为此获得特别许可) )
目前,此功能已被轻松记录
inBitmap上的BitmapOptions)。除此之外,删除对它们的所有引用,最终它们将被垃圾回收。
android:largeHeap。但是,请求大堆可能会迫使其他应用程序进程比其他情况更早终止,从而可能整体损害用户体验。
您不能动态增加堆大小。
您可以通过android:largeHeap="true"在清单中使用来请求使用更多内容。
另外,您可以使用native memory (NDK & JNI),因此您实际上绕过了堆大小限制。
这是我对此发表的一些文章:
这是我为之准备的图书馆:
使用第二个过程。声明在AndroidManifest新Service与
android:process=":second"
第一和第二过程之间的交换 BroadcastReceiver
根据您的Android操作系统,可以通过两种方式完成此操作。
android:largeHeap="true"在Android清单的应用程序标签中使用来请求更大的堆大小,但这不适用于任何之前的Honeycomb设备。VMRuntime.getRuntime().setMinimumHeapSize(BIGGER_SIZE);
在设置HeapSize之前,请确保输入了适当的大小,该大小不会影响其他应用程序或OS功能。在设置之前,只需检查您的应用占用的大小,然后设置大小即可完成您的工作。不要使用太多内存,否则其他应用程序可能会影响。
参考:http : //dwij.co.in/increase-heap-size-of-android-application