我在多个地方使用createBitmap()
。有时这个api会抛出OutOfMemoryError()
异常。如何避免这种异常?
我正在使用如下,
createBitamp(width, height, Config.ARGB_8888);
width = width
屏幕
height = height
屏幕
任何帮助都将不胜感激。
答案 0 :(得分:6)
我已在以下Android问题故障单中发布了有关如何处理位图的一些信息。它可能对您有所帮助:http://code.google.com/p/android/issues/detail?id=8488#c80
答案 1 :(得分:5)
许多人面临这个问题。您有三种方法可以解决问题:
通常有了Bitmap问题,垃圾收集器会有所帮助。
Justin Breitfeller回复links对Bitmap内部工作原理的更详细解释。要带走的消息是为位图数据分配的内存(在本机createBitmap方法中)被稍微分开处理,并且当Bitmap变为可垃圾收集时,GarbageCollector不会直接释放它。真正的解决方案是在不使用它们时回收()您的位图。这仍将保留为Bitmap对象分配的(小)内存,但标记为位图数据分配的(大)内存可收集垃圾。因此GarbageCollector反过来会释放两者,但你不必手动调用它,在OutOfMemory发生之前,JVM将尝试GarbageCollect。