0

在活动中发布可绘制对象并管理其生命周期的正确方法是什么?我正在尝试清除我的位图,因为我看到一些与内存相关的崩溃。

我愿意:

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;

    }
4

1 回答 1

1

这是正确的方法。但是,您可能会添加更多调整。

  1. 您将位图设置为 null,但 VM 垃圾收集可能仅在您已尝试重新加载图像时触发。因此,在您的 onPause 中,您可以使用:System.gc()告诉 GC 您需要它。但是,不能保证它会来。

  2. API 14+仅在您真正需要时才android:largeHeap="true"在您的 XML 中使用。这将增加您的应用程序允许的堆大小。

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

于 2013-03-22T18:08:50.300 回答