我正在使用视图模型和实时数据来观察编辑文本视图中的变化,如下所示。当我使用leakcanar运行应用程序时,它向我显示内存泄漏:Mainactivity.fragviewmodel泄漏。
FragViewModel model;
@Override
public View onCreateView(@NotNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
model = new ViewModelProvider(requireActivity()).get(FragViewModel.class);
final Observer<String> savedTextObserver = newName -> {
list = MainActivity.quotesDatabaseClass.quoteDao().getQuotes();
adapter.setData(list);
};
model.getTextToSave().observe(requireActivity(), savedTextObserver);
}
@Override
public void onDestroyView() {
super.onDestroyView();
fragmentEmojiBinding = null;
model = null;
}
Using .observe(requireActivity(), savedTextObserver);
在一个片段中onCreateView
从来都不是正确的事情:这就是说您想要使用 Activity 的生命周期进行观察,即使您删除 Fragment 或将 Fragment 放在返回堆栈上,该生命周期也会继续。
相反,你应该使用.observe(getViewLifecycleOwner()
,保存的文本观察者); to get the Lifecycle specifically associated with the Fragment's view, which is the correct scope for any Observer that updates your Fragment's UI (such as your
设置适配器`)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)