RxJavaでの破棄について質問があります。 GithubのRxSwiftドキュメントでこの下の文を見つけました。
シーケンスが
completed
またはerror
イベントを送信すると、シーケンス要素を計算するすべての内部リソースが解放されます。シーケンス要素の作成をキャンセルしてリソースをすぐに解放するには、返されたサブスクリプションに対してdisposeを呼び出します。
私が正しく理解していれば、リソース(オブザーバブル)がonCompleted
またはonError
を呼び出した後に解放されます。
だから問題は、RxJavaはRxSwiftのように同じことをするのですか、それとも自分でdisposeを呼び出す必要があるのですか?
はい、関連するすべてのリソースは自動的に破棄されます。 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);
}