1

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

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

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

4

3 回答 3

0

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

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

于 2013-01-09T09:07:23.160 回答
0

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

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

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

编辑:另外,您提到您将图像分成三部分。不要那样做,因为每个位图都会消耗额外的内存。相反,将其保留为一个 Bitmap,但在整个 Bitmap 上执行缩放。

于 2013-01-09T09:06:44.560 回答
0

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

于 2013-01-09T09:16:36.817 回答