使用 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多次,当然会被回调多次,导致数据重复