【发布时间】:2020-03-29 17:59:47
【问题描述】:
我有一个空的对话框片段。为了解决内存泄漏问题,我将 LeakCanary 库添加到我的应用程序中。使用此命令打开对话框片段时:
DialogFragment fragment = TabsFragment.newInstance();
fragment.setStyle(DialogFragment.STYLE_NO_FRAME, R.style.DialogFragments);
fragment.show(getSupportFragmentManager(), "MyFragment");
然后关闭它,LeakCanary 显示这个错误:
我尝试在 OnCreate 方法中添加 setRetainInstance,在 onDestroyView 中添加 view = null。但是那个内存泄漏错误仍然出现。
这是我的片段:
public class TabsFragment extends DialogFragment {
private View view;
public static TabsFragment newInstance() {
return new TabsFragment();
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.my_fragment, container, false);
return view;
}
@Override
public void onDestroyView() {
super.onDestroyView();
dismiss();
view = null;
}
}
如何解决这个问题?
【问题讨论】:
标签: android memory-leaks