在活动中发布drawable并管理它的生命周期的正确方法是什么?我正在尝试清除我的位图,因为我看到一些与内存相关的崩溃。
我做:
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;
}
答案 0 :(得分:1)
这是正确的方法。但是你可能会增加一些调整。
您将位图设置为null,但VM垃圾回收可能仅在您尝试重新加载图像时触发。所以在你的onPause你可以使用:System.gc()
告诉GC你需要它。然而,它不会得到保证。
仅在您确实需要的情况下在XML 中使用android:largeHeap="true"
。这将增加应用程序堆的允许大小。
你真的需要那些大照片吗?尝试使它们更小,使用密度相关编码。在加载之前尝试缩小它......