我不断收到关于我的静态 fragment 实例内存泄漏的警告。 我声明如下:
私有(private)静态myFragment thisFragment;
并在这里调用它:
public static myFragment newInstance() {
if (thisFragment == null) {
thisFragment = new myFragment();
}
return thisFragment;
}
我该如何解决这个问题?有什么想法吗?
谢谢!
最佳答案
嗯,有 3 种可能的解决方案:
1) 不创建静态 fragment 。它们总是绑定(bind)到上下文,因此,它们不应该是静态的。考虑重构您的应用架构。
2) 当上下文被销毁时将 fragment 实例设置为null
(activity onStop)
3) 将 WeakReference 用于 fragment 字段,它不会保存来自 GC 的实例。
UPD: 3) 的示例
class ExampleFragment extends Fragment {
private static WeakReference<Fragment> instance;
public static ExampleFragment getInstance() {
if (instance == null) {
instance = new WeakReference<>(new ExampleFragment());
}
return instance.get();
}
}
关于android - 如何避免静态 fragment 上下文的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45494660/