2017-08-09 1 views
0

RxJavaの処分に関する質問があります。私はGithubのRxSwift文書の下でこれを見つけました。RxJava2は、completeまたはerrorを呼び出すとobservableを自動的に破棄しますか?

シーケンスは、シーケンスの要素を計算し、すべての内部リソースが解放されますcompletedまたはerrorイベントを送信します。

シーケンス要素の生成をキャンセルしてすぐにリソースを解放するには、返されたサブスクリプションでdisposeを呼び出します。

私が正しく理解していれば、彼らはonCompletedまたはonError呼び出した後のリソース(観測)が解放されます。

RxJavaはRxSwiftと同じことをするのでしょうか、それとも私は自分で処分する必要がありますか?

あなたは

答えて

4

はい、関連するすべてのリソースが自動的に配置されますありがとうございました。 RxJava 2の次のテストを実行する方法を説明する:

boolean isDisposed = false; 

@Test 
public void testDisposed(){ 
    TestObserver<Integer> to = Observable.<Integer>create(subscriber -> { 
     subscriber.setDisposable(new Disposable() { 

      @Override 
      public boolean isDisposed() { 
       return isDisposed; 
      } 

      @Override 
      public void dispose() { 
       isDisposed = true; 
      } 
     }); 
     subscriber.onComplete(); 
    }).test(); 

    to.assertComplete(); 
    assertTrue(isDisposed); 
} 
関連する問題