Monodroid / Android在旧设备上使用android:largeHeap

时间:2013-01-09 09:02:42

标签: android xamarin.android android-4.2-jelly-bean android-largeheap

我在我的应用程序中使用android:largeHeap来获取更多内存,因为我在scrollview中有一个大图像,否则我的应用程序会因为一个outofmemory异常而崩溃。

我有2个设备,一个使用Android 4.2 jellybean,另一个使用Android 2.3 Gingerbread。在4.2上android:largeHeap工作正常,但在2.3我不能使用它。

有没有办法让这两种设备都满意?谢谢你的帮助。

3 个答案:

答案 0 :(得分:0)

在Honeycomb(3.0)中添加了largeHeap参数,因此它不适用于较低的设备。

但是,使用largeHeap参数不是解决方案。它必须作为绝对的最后手段使用。它将迫使Android终止任何后台进程或应用程序以获得额外的堆,这是一个很大的禁忌!

您说ScrollView中有一个大图像。您是否尝试过首先使用BitmapFactory适当缩放图像?

编辑:另外,您提到将图像分割为三个。不要那样做,因为每个Bitmap都会占用额外的内存。相反,将其保留为一个Bitmap,但对整个Bitmap执行缩放。

答案 1 :(得分:0)

我想这与getLargeMemoryClasss()一起使用?这仅适用于API 11 // Android 3 // Honeycomb。

作为旁注,我不确定你是否应该需要它,你不能只是缩放图像吗?

答案 2 :(得分:0)

Here详细讨论了有关如何有效使用位图的stackoverflow,以便不会发生outofmemory错误,并且您不必增加应用程序的堆大小。