如果它保留了内存,如果保留Fragment继续引用它的View元素?

时间:2016-03-07 14:01:24

标签: android performance android-fragments

我有一个活动,在活动中我只有一个容器布局和一个有自己布局的Fragment,并且setRetainInstance为true。

首次创建活动时,我将此片段添加到容器中,片段引用了Fragment布局的View对象(例如Button)。

当发生配置更改时,会发生内存泄漏,我不知道View对象是否仍然引用了旧的Activity?

1 个答案:

答案 0 :(得分:0)

不要保留对旧资源的引用。有时您会发现它们导致NullPointerException崩溃。相反,创建必需字段静态方法(例如getFeild()),首先检查字段是否为null然后初始化它,之后返回字段值。

示例(错误)

public class MainActivity extends Activity {
    public SomeType myImportantObj;
}
...
//in another place
Object o = mainActivity.myImportantObj; // this could be null !!

<强>

public class MainActivity extends Activity {
}

public class SomeType {
   private static SomeType instance;
   public static SomeType getInstance() {
       if (instance == null) instance = new SomeType();
       return instance;
   }
}
...
//in other place
Object o = SomeType.getInstance();