如何避免android中的createBitmap()崩溃

我在多个地方使用createBitmap() 。 有时候这个api会抛出OutOfMemoryError()exception。 如何避免这种exception?

我使用如下,

 createBitamp(width, height, Config.ARGB_8888); 

width = width屏幕的width = width

height = height屏幕的height = height

任何帮助,将不胜感激。

Solutions Collecting From Web of "如何避免android中的createBitmap()崩溃"

我发布了一些关于如何在以下Android问题单中处理位图的信息。 这可能对您有所帮助: http : //code.google.com/p/android/issues/detail?id=8488#c80

很多人面临这个问题。 你有三种方法来解决问题:

  • 增加可用内存:停止服务,或将您的设备更改为新的
  • 减less内存使用量:通过优化您的代码
  • [UPDATE]释放未使用的Bitmap内存:call recycle() 。
  • [更新]不要使用GarbageCollector 🙂

通常与位图问题,垃圾收集器将有所帮助。

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