gpt4 book ai didi

android - LiveData,注册观察者时如何避免第一次回调

转载 作者:行者123 更新时间:2023-12-04 12:17:18 25 4
gpt4 key购买 nike

我想在 fragment 中加载任务,在 fragment 的 onViewCreated 中,我注册了 LiveData观察者,在 fragment 的onResume中,我异步加载任务,当第一次进入 fragment 时,它工作正常,但是当我导航到其他 fragment 然后回到任务 fragment 时,回调onChanged()将被调用两次。

我知道如果 LiveData 已经有数据集,它将被传递给观察者,所以当回到任务 fragment 时,onChangedonViewCreated 中注册观察者时会触发,并且在 onResume 中,将触发 onChanged第二次,我想知道如何避免这种情况。查了很多,知道有一个EventWrapper ,可以标记onChanged第一次触发时消耗的内容。但我认为这种方法太重了。对不起我的英语不好...

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle
savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//...
mainViewModel = ViewModelProviders.of(getActivity()).get(MainViewModel.class);
mainViewModel.increaseTaskList.observe(getViewLifecycleOwner(), new
Observer<List<Task>>() {
@Override
public void onChanged(@Nullable List<Task> tasks) {
Log.d("ZZZ","data changed,IncreaseTaskListAdapter setData");
adapter.setData(tasks);
}
});
}

@Override
public void onResume() {
super.onResume();
mainViewModel.loadIncreasePointTaskList();
}

最佳答案

您可以使用 SingleLiveEvent 只要内容没有改变,它就不会被触发。

不过,这是 Google 推荐的。

关于android - LiveData,注册观察者时如何避免第一次回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56663707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com