【发布时间】:2013-04-26 19:36:43
【问题描述】:
我有一个程序从画廊加载位图(通过调度结果意图),然后显示图像。然后在离开显示图像的活动时,我调用bm.recycle()。但这似乎并没有回收位图?我知道这是因为这里的帖子中描述的问题:android bitmap out-of-memory error after getting same image twice in a row。
这个问题具体如本题所述:为什么 onDestroy 不回收位图? (我只提供某些上下文的链接,而不是分散注意力)
这是我的 onDestroy:
@Override
protected void onDestroy() {
super.onDestroy();
unbindDrawables(findViewById(android.R.id.content).getRootView());
System.gc();
myImage.recycle();
myImage = null;
}
【问题讨论】:
-
也许你只回收你创建的最后一个位图。完成后应该回收位图。
-
完成它是指在视图中将其显示为 setImageBitmap 或 setDrawable 之后吗?
-
不完全是,如果你这样做了,你可能会得到异常。我想说的是,不要等到你的activity进入onDestroy(),如果一个位图对你不再有用,你可以回收它。
标签: android image bitmap android-lifecycle activity-lifecycle