我有一个活动,在活动中我只有一个容器布局和一个有自己布局的Fragment,并且setRetainInstance为true。
首次创建活动时,我将此片段添加到容器中,片段引用了Fragment布局的View对象(例如Button)。
当发生配置更改时,会发生内存泄漏,我不知道View对象是否仍然引用了旧的Activity?
答案 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();