0

我正在制作备忘录类型的应用程序。当用户想要创建备忘录时,他/她可以将多个图像添加到该备忘录。一切正常,但当我添加多个备忘录与图像我的应用程序崩溃与java.lang.OutOfMemory异常。我知道这是有关的位图,所以这是一个示例代码:OutOfMemory位图问题

noteImage = BitmapFactory.decodeFile(originalExtImgPath) 

此后,我节省内存这些位图

`AsyncTask.execute { 
     for (index in images.indices) { 
      storage.createFile("Images", paths[index], images[index]) 
     } 
    }` 

我仅添加了三幅图像,这是多大的内存它正在使用。

如何管理这使得它使用较少的内存?谢谢!

+1

https://developer.android.com/topic/performance/graphics/index.html – tebitoq

+1

采取堆转储,并找出你在哪里'正在使用记忆(并且很可能泄漏它)。内存问题从来不是关于实现一个技巧,而是关于如何理解内存作为一个整体使用并解决整个应用程序。对于位图,在需要之前不要将它们加载到内存中,尽可能释放它们并使用缓存。 –

+0

@GabeSechan如果可能,释放Bitmaps是什么意思? –

回答

2

基本上说,问题是你正在试图加载一个大的图像到内存中。没有足够的内存来存储所有图像和应用程序崩溃。 诀窍是减少位图的内存占用。

有关于这在Android开发者网站一个伟大的文章: Loading Large Bitmaps Efficiently