2011-10-19 80 views
7

我在多个地方使用createBitmap()。有时候这个API会抛出OutOfMemoryError()异常。如何避免这种异常?如何避免android中的createBitmap()崩溃

我使用类似下面,

createBitamp(width, height, Config.ARGB_8888); 

屏幕

屏幕

任何帮助的height = heightwidth = width将不胜感激。

+0

阅读此博文http://codingaffairs.blogspot.com/2016/07/processing-bitmap-and-memory-management.html –

回答

5

很多人面临这个问题。您有三种方式来解决proble:

  • 增加可用存储空间:停止服务,或更改设备到较新的一个
  • 减少内存使用:通过优化代码
  • [更新]免费未使用的位图内存:请致电recycle()
  • [更新]不要使用GarbageCollector :)
与位图的问题

通常情况下,垃圾收集器会有所帮助。

Justin Breitfeller的回复links更详细地解释了Bitmap的内部工作原理。要删除的消息是分配给位图数据的内存(在本机createBitmap方法中)被分开处理,并且在Bitmap成为垃圾收集时不会被GarbageCollector直接释放。真正的解决方案是在不使用它们时回收()你的位图。这仍然会保留为Bitmap对象分配的(小)内存,但会标记分配给位图数据垃圾收集的(大)内存。因此,垃圾收集器反过来将释放这两个,但你不必手动调用它,在OutOfMemory发生之前,JVM将尝试GarbageCollect反正。

+0

System.gc()似乎工作最适合我!谢谢!! –

相关问题