在 Activity 中释放可绘制对象并管理其生命周期的正确方法是什么?我正在尝试清除我的位图,因为我看到一些与内存相关的崩溃。
我愿意:
private static bitmap;
public void onResume() {
view.setBackgroundDrawable( new BitmapDrawable(getResources(),bitmap));
}
public void onPause() {
view.setBackgroundDrawable(null); // What is the best way to do this?
bitmap.recycle();
bitmap=null;
}
最佳答案
这才是正确的做法。不过,您可能会添加一些更多的调整。
您将位图设置为空,但虚拟机垃圾收集可能仅在您尝试重新加载镜像时触发。所以在onPause中你可以使用:
System.gc()
来告诉GC你需要它。但不能保证它一定会到来。对于 API 14+,仅当您确实需要时才在 XML 中使用
android:largeHeap="true"
。这将增加您的应用程序允许的堆大小。你真的需要那么大的图片吗?尝试使它们更小,使用密度相关编码。尝试在加载之前缩小它...
关于java - 在 onpause 中释放可绘制的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15576531/