2012-10-11 73 views
0

我正在开发一个图像处理应用程序,其中我有一个包含多个图像的相册文件夹。OutOfMemory错误Android

也可以有多个专辑在项目中。 在启动应用程序时,会有一个相册列表。显示包含在该相册中的图像时选择相册内容。

如果我们选择的图像超出了所选图像的绘制范围(即,您可以在图像上绘制线条或形状),那么将启动新的活动。 您也可以使用相机或图库将图像添加到相册。 现在我面临的问题是,该应用程序工作正常。但我无法处理OutOfMemory错误。 我已经尝试了很多东西。如

  1. 调整图像大小。
  2. 破坏活动。
  3. 对数据库帮助程序类使用应用程序上下文。
+0

检查我的答案在这个问题http://stackoverflow.com/questions/5125779/how-to-compress-image-for-imageview-in-android –

+1

http://stackoverflow.com/questions/12716574/bitmap -recycle-与启用largeheap-/ 12819091#12819091 –

回答

0

你必须选择,在Android中使用的图像工作: - 使用Java和SDK - 使用本机代码和NDK

如果你只想使用SDK尝试使用inSampleSize采样资源的图像。除了采样图像之外,确保您在使用后正确回收图像资源,并且您的应用程序中没有内存泄漏。您可以使用MAT来发现内存泄漏。

或者您可以使用NDK编写代码。当你使用本地代码时,你创建的对象在本地堆中与Java相对。

0

OOM(OutOfMemory)问题始终是由于有关位图对象的不当处理造成的。所以你所尝试过的(调整大小,销毁活动,等等)不能解决OOM问题。

更好的解决OOM的方法是根据设备的分辨率密度将图像加载到内存中。 Goole Android培训课程有一章讲述如何高效地加载大型图像。在这里可以称作

https://developer.android.com/training/displaying-bitmaps/load-bitmap.html

希望这会帮助你!