0

在我的应用程序中,我试图使用 100 个图像显示页面卷曲效果,如以下 github 链接中所述 -这里

在示例代码中,他们只使用了两个图像,但在我的应用程序中,我使用了大约 90 个图像。这会导致应用程序崩溃,在 logcat 中出现以下问题

E/dalvikvm-heap(603): Out of memory on a 5529616-byte allocation.

当我尝试使用 7 张图片时,效果很好。当我尝试增加超过 7 个时,它会崩溃。我所有的图像都在 drawable 文件夹中。

在那个 github 代码中,drawable 中的图像如下所示

mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page9));
        mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page10));
        mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page11));
        mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page12));
        mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page13));
        mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page14));
        mPages.add(BitmapFactory.decodeResource(getResources(),R.drawable.page15));

如何解决此问题并加载所有图像,任何更好的建议......

4

2 回答 2

0

您必须意识到每个应用程序的堆在 Android 中是非常有限的,因此您不能像在台式 PC 上使用那么多内存。所以这里是您可能想要使用的解决方案:

  1. 使用较小尺寸的图像。
  2. 优化您的应用程序行为,这意味着您不应加载任何Bitmaps暂时未使用的内容,并在它们变得不需要时立即正确回收它们。
  3. 限制 的数量Bitmaps,这已经为您工作了。

希望您将实现其中之一以使您的应用程序更好地工作。

于 2012-11-11T19:02:53.043 回答
0

使用延迟加载机制。不要一次把所有的位图都加载到内存中,把id保存在一个.里面ArrayList,需要的时候加载,用完后卸载位图,这样内存就可以释放了。

于 2012-11-11T21:00:52.473 回答