首页 > 解决方案 > onNext 为 ArrayList 的每个元素触发,而不是使用 RXJava 触发一次

问题描述

我有一种使用模式正在听ArrayList的类型:ObjectObservable

//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 中没有任何循环机制

标签: javaandroidrx-java2

解决方案


如果你想对最后一个项目何时发出执行一些操作,那么你应该实现 onComplete()。onNext() 为每个发射的新项目调用。


推荐阅读