【发布时间】:2012-07-10 05:26:53
【问题描述】:
我正在从事涉及位图操作的项目。因为我不想有 OutofMemoryError 我正在尝试回收每个未使用的位图。不幸的是,我已经回收了太多并且“尝试使用回收的位图”错误。
我正在使用:
Bitmap.createBitmap(bmp, x,y,w,h, matrix, false);
Bitmap.createScaledBitmap(bmp, w, h,true);
我应该在这些方法之后回收 bmp 还是由他们回收?喜欢:
Bitmap newBitmap = Bitmap.createBitmap(bmp, x,y,w,h, matrix, false);
bmp.recycle();
我可以在 imageView.setImageBitmap() 之后回收之前在这里使用的一个吗?例如
myImageView.setImageBitmap(myBitmap);
myImageView.setImageBitmap(newBitmap);
myBitmap.recycle();
感谢您的帮助。
【问题讨论】:
-
在创建位图时考虑使用 BitmapFactory.Options。具体看inPurgeable...developer.android.com/reference/android/graphics/…
-
“尝试使用回收的位图”是您看到的关于回收位图的确切且唯一的错误吗?如果是,可能值得尝试分析您的堆栈跟踪并查看是否可以在错误发生时检测到模式(框架中有一个中心位置会引发此异常,尽管您的代码有很多方法可以到达那里)。
标签: android memory-management bitmap out-of-memory