0

次のコードを使用すると:(Observable.create())

    Observable.create(new ObservableOnSubscribe<User>() {
        @Override
        public void subscribe(ObservableEmitter<User> emitter) throws Exception {
            emitter.onNext(new User("Even201314", 14));
        }
    }).repeatUntil(new BooleanSupplier() {
        @Override
        public boolean getAsBoolean() throws Exception {
            repeatCount += 1;
            Log.d(TAG, "count: " + repeatCount);
            return repeatCount > 10;
        }
    })

メソッド repeatUntil は実行されません。コンソールには何も記録されません。
しかし、次のコードを使用すると:(Observable.just())

    final User user = new User("Even201314", 24);
    Observable.just(user).repeatUntil(new BooleanSupplier() {
        @Override
        public boolean getAsBoolean() throws Exception {
            repeatCount += 1;
            Log.d(TAG, "count: " + repeatCount);
            return repeatCount > 10;
        }
    })

メソッド repeatUntil が実行されます。コンソールには次のように記録されます。

11-14 00:00:36.312 5788-5854/com.even.learningrxjava2 D/MainActivity: count: 1
11-14 00:00:36.312 5788-5854/com.even.learningrxjava2 D/MainActivity: count: 2
11-14 00:00:36.313 5788-5854/com.even.learningrxjava2 D/MainActivity: count: 3
11-14 00:00:36.313 5788-5854/com.even.learningrxjava2 D/MainActivity: count: 4
11-14 00:00:36.313 5788-5854/com.even.learningrxjava2 D/MainActivity: count: 5
...

Observable.create() が repeatUntil() メソッドを実行しない理由がわかりませんか?

4

1 に答える 1

0

そうしないemitter.onComplete()と、繰り返しがトリガーされません。

于 2016-11-14T08:19:15.320 に答える