我正在做这样的事情:

return Observable.zip(
    Observable.interval(0, MOVE_LENGTH_IN_MILLIS, TimeUnit.MILLISECONDS),
    Observable.fromIterable(mySuperNiceArrayList),
        new BiFunction<Long, ItemTest, ItemTest>() {
            @Override
            public ItemTest apply(@NonNull Long aLong, @NonNull ItemTest itemTest) throws Exception {
                  return itemTest;
            }
        }
)

我遇到的问题是,在发出最后一个项之后,立即调用onComplete。有没有办法推迟/延迟oncomplete方法的调用?
黑客解决方案是在arrayList中再添加一个元素,然后在onNext()中忽略它。

最佳答案

concat整个zip,空的Observable延迟:

return Observable.zip(
    Observable.interval(0, MOVE_LENGTH_IN_MILLIS, TimeUnit.MILLISECONDS),
    Observable.fromIterable(mySuperNiceArrayList),
        new BiFunction<Long, ItemTest, ItemTest>() {
            @Override
            public ItemTest apply(@NonNull Long aLong,
                    @NonNull ItemTest itemTest) throws Exception {
                return itemTest;
            }
        }
).concatWith(Observable.<ItemTest>empty()
                 .delay(MOVE_LENGTH_IN_MILLIS, TimeUnit.MILLISECONDS));

编辑延迟应该发生在压缩之后。

08-04 06:47