在forpause中释放背景drawable

时间:2013-03-22 17:32:25

标签: java android

在活动中发布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;

    }

1 个答案:

答案 0 :(得分:1)

这是正确的方法。但是你可能会增加一些调整。

  1. 您将位图设置为null,但VM垃圾回收可能仅在您尝试重新加载图像时触发。所以在你的onPause你可以使用:System.gc()告诉GC你需要它。然而,它不会得到保证。

  2. 使用API​​ 14+的
  3. 仅在您确实需要的情况下在XML 中使用android:largeHeap="true" 。这将增加应用程序堆的允许大小。

  4. 你真的需要那些大照片吗?尝试使它们更小,使用密度相关编码。在加载之前尝试缩小它......