2016-11-14 44 views
0

當我使用下面的代碼工作:(Observable.create())的repeatUtil()不是Rxjava 2.X

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不會executed.The控制檯不會記錄任何東西。
但是,如果使用下面的代碼:(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將executed.And方法控制檯將日誌:

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()方法嗎?

回答

0

它需要一個emitter.onComplete()否則重複不會被觸發。

相關問題