web-dev-qa-db-ja.com

doAfterTerminateとdoFinallyの違い

RxJava 2の演算子「doAfterTerminate」と「doFinally」の違いを誰もが知っていますか?

16

違いは、通常のdoFinallyまたはAction終了パスに加えて、ダウンストリームがシーケンスをキャンセル/破棄する場合、onErrorが提供されたonCompleteを実行することです。これにより、3つの手段すべてでリソースをクリーンアップおよび解放できます。オペレーターは、onErrorまたはonCompleteがキャンセルと競合する場合でも、アクションがサブスクリプションごとに1回だけ実行されることも保証します。

対照的に、doAfterTerminateonErrorおよびonCompleteのみを対象とします。

doFinallydoAfterTerminate + doOnCancelでエミュレートできますが、操作を分割すると、アクションパラメーターが実行され、ide等でないクリーンアップロジックで問題が発生する可能性があります。

30
akarnokd