sum*_*man 2 android memory-leaks viewmodel
我正在使用视图模型和实时数据来观察编辑文本视图中的变化,如下所示。当我使用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;
}
Run Code Online (Sandbox Code Playgroud)
.observe(requireActivity(), savedTextObserver);在 Fragment 中使用onCreateView永远不是正确的事情:这就是说您想要观察使用 Activity 的生命周期,即使您删除 Fragment 或将 Fragment 放在返回堆栈上,该生命周期也会继续。
相反,您应该使用.observe(getViewLifecycleOwner(),savedTextObserver); 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设置适配器`)。
| 归档时间: |
|
| 查看次数: |
1838 次 |
| 最近记录: |