我在我的应用程序中使用android:largeHeap来获取更多内存,因为我在scrollview中有一个大图像,否则我的应用程序会因为一个outofmemory异常而崩溃。
我有2个设备,一个使用Android 4.2 jellybean,另一个使用Android 2.3 Gingerbread。在4.2上android:largeHeap工作正常,但在2.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错误,并且您不必增加应用程序的堆大小。