Android 如果是';如果保留的片段保留对它的引用,则会泄漏内存';s视图元素?

Android 如果是';如果保留的片段保留对它的引用,则会泄漏内存';s视图元素?,android,performance,android-fragments,Android,Performance,Android Fragments,我有一个活动,在该活动中,我只有一个容器布局和一个具有自己布局的片段,并且已将retaininstance设置为true 第一次创建活动时,我将这个片段添加到容器中,片段有一个对片段布局的视图对象的引用(例如一个按钮) 当发生配置更改时,是否会发生内存泄漏,我想知道View对象是否仍有对旧活动的引用?不要保留对旧资源的引用。有时您会发现它们会导致NullPointerException崩溃。相反,将必填字段设为静态方法(例如getFeild()),首先检查字段是否为null,然后初始化它,然后返

我有一个活动,在该活动中,我只有一个容器布局和一个具有自己布局的片段,并且已将retaininstance设置为true

第一次创建活动时,我将这个片段添加到容器中,片段有一个对片段布局的视图对象的引用(例如一个按钮)


当发生配置更改时,是否会发生内存泄漏,我想知道View对象是否仍有对旧活动的引用?

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

示例(错误)


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

示例(错误)


不要保留对旧资源的引用。有时您会发现它们会导致
NullPointerException
崩溃。相反,使用必填字段
静态方法(例如
getFeild()
),首先检查字段是否为空,然后初始化字段,然后返回字段值。不要保留对旧资源的引用。有时您会发现它们会导致
NullPointerException
崩溃。相反,使用必需的字段
静态
方法(例如
getFeild()
),首先检查字段是否为空,然后初始化它,然后返回字段值.Bad。避免使用静力学。@NikolaDespotoski你能解释一下为什么它不好吗(第二种方法)?不好。避免使用静力学。@NikolaDespotoski你能解释一下为什么它不好吗(第二种方法)?
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();