Android LiveData Observer 多次调用

使用 Android Architecture Components,出现一个问题,LiveData的观察者Obsever会被多次调用。

我的写法是

private void loadData(FragmentActivity activity) {
        RfLoader.showLoading(activity);
        multiseriateDialogViewModel.doRequest(url, params).observe(activity, new Observer<List<T>>() {
            @Override
            public void onChanged(List<T> t) {
                if(t != null && !t.isEmpty()) {
                    beans.clear();
                    beans.addAll(t);
                    recyclerViewAdapter.notifyDataSetChanged();
                }
            }
        });
    }

即每调一次loadData,都会调一次LiveData的observe方法。

查看observe方法的源码发现,LiveData可以注册多个Observer。

调用多次observe方法会注册多次,我的写法相当于重复注册同一个observer多次,当然会被回调多次,导致数据重复

发布了87 篇原创文章 · 获赞 14 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/epitomizelu/article/details/104567666