2012-11-11 83 views
0

在我的应用我试图表明使用100张图片页面卷曲效果如下面的GitHub的链接解释 - hereAndroid的内存不足问题

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

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

当我与它的工作好7张图片试过。当我尝试增加超过7时,它会坠毁。我所有的图像都在可绘制的文件夹中。

在这种GitHub的代码绘制的图像采取如下

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)); 

如何解决这个问题,加载所有的图像,更好的建议...

回答

0

使用延迟加载机制。不要一次将所有位图加载到内存中,将ID保留在ArrayList中,并根据需要加载它们,并在使用它们之后卸载位图,以便释放内存。

0

你必须认识到,堆每个应用程序在Android中的使用都非常有限,因此您无法像使用桌面PC那样使用更多的内存。所以下面是您可能想要使用的解决方案:

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

希望你会实现其中的一个,使你的应用程序更好地工作。