java - 在 onpause 中释放可绘制的背景

标签 java android

在 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;

    }

最佳答案

这才是正确的做法。不过,您可能会添加一些更多的调整。

  1. 您将位图设置为空,但虚拟机垃圾收集可能仅在您尝试重新加载镜像时触发。所以在onPause中你可以使用:System.gc()来告诉GC你需要它。但不能保证它一定会到来。

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

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

关于java - 在 onpause 中释放可绘制的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15576531/

相关文章:

java - fragment 错误 : Incompatible Types Required: android. support.v4.app.Fragment,找到 : package_name. app_name.Fragment_name

Android 更改 TextField 轮廓/边框颜色

java - Android相机教程-galleryaddpic不起作用

java - 与 Java 相比,Javascript 的速度有多快?

java - 试图在java中的Arraylist中找到一个对象的所有出现

android - 在循环Listview中显示数据

android - 我们如何在android中为imageview设置高度和宽度dp?

java - .toString() 和 (String) 在 Java 中的区别

java - 创建x个线程,然后等待完成

java - 我是否应该为每个 Activity 创建演示者和模型?