Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
页面卷曲效应中的android内存不足问题_Android_2d_Out Of Memory_Page Curl - Fatal编程技术网

页面卷曲效应中的android内存不足问题

页面卷曲效应中的android内存不足问题,android,2d,out-of-memory,page-curl,Android,2d,Out Of Memory,Page Curl,在我的应用程序中,我尝试使用100幅图像显示页面卷曲效果,如下github链接所述- 在示例代码中,他们只使用了两个图像,但在我的应用程序中,我使用了大约90个图像。这会导致应用程序崩溃,logcat中出现以下问题 E/dalvikvm-heap(603): Out of memory on a 5529616-byte allocation. 当我尝试使用7张图片时,效果很好。当我试图增加超过7,它就会崩溃。我的所有图像都在可绘制文件夹中 在该github代码中,drawable中的图像如下

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

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

E/dalvikvm-heap(603): Out of memory on a 5529616-byte allocation.
当我尝试使用7张图片时,效果很好。当我试图增加超过7,它就会崩溃。我的所有图像都在可绘制文件夹中

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

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

您必须意识到,Android中每个应用程序的堆非常有限,因此您无法使用桌面PC上的内存。因此,以下是您可能希望使用的解决方案:

  • 使用较小尺寸的图像
  • 优化您的应用程序行为,意味着您不应该加载任何当前未使用的
    位图,并在它们变得不必要时正确地回收它们
    
  • 限制已适用于您的
    位图的数量

  • 希望您能实现其中一个,使应用程序工作得更好。

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