java onNext为ArrayList的每个元素触发,而不是使用RXJava触发一次
我有一个类型为Object
的ArrayList
,我正在使用Observable
模式收听它:
//Instances
private List<Store> storeList = new ArrayList<>();
private static PublishSubject<List<Store>> publishStoreListSubject = PublishSubject.create();
private Observer<List<Store>> storeListObserver = new Observer<List<Store>>() {
@Override
public void onSubscribe(Disposable d) { }
@Override
public void onNext(List<Store> storeList) {
//Do work ....
}
@Override
public void onError(Throwable e) { }
@Override
public void onComplete() { }
};
在我的onCreate方法中:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
publishStoreListSubject.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()).subscribe(storeListObserver);
}
在我的客户端服务器方法中,我有以下内容:
onRetrieveStores() {
publishStoreListSubject.onNext(storeList);
..
..
..
}
问题:正在为每个商品触发onNext,而不是将整个storeList作为一个单元。例如:如果我有4个商店,onNext会被触发4次
顺便说一句,我的onRetrieveStores中没有任何循环机制
# 1 楼答案
如果您想在发出最后一项时执行一些操作,那么应该实现onComplete()。为每个发出的新项调用onNext()