0 android memory-leaks android-context android-fragments android-memory
我不断收到有关我的静态片段实例的内存泄漏的警告。我声明如下:
私有静态myFragment thisFragment;
并在这里调用:
public static myFragment newInstance() {
if (thisFragment == null) {
thisFragment = new myFragment();
}
return thisFragment;
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决?有任何想法吗?
谢谢!
嗯,有3种可能的解决方案:
1)不创建静态片段。它们始终与上下文绑定,因此,它们不应该是静态的。考虑重构您的应用架构。
2)将片段实例设置为null上下文被破坏时(activity onStop)
3)对片段字段使用WeakReference,它将不保存来自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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1469 次 |
| 最近记录: |