RxJava 2の演算子「doAfterTerminate」と「doFinally」の違いを誰もが知っていますか?
違いは、通常のdoFinally
またはAction
終了パスに加えて、ダウンストリームがシーケンスをキャンセル/破棄する場合、onError
が提供されたonComplete
を実行することです。これにより、3つの手段すべてでリソースをクリーンアップおよび解放できます。オペレーターは、onError
またはonComplete
がキャンセルと競合する場合でも、アクションがサブスクリプションごとに1回だけ実行されることも保証します。
対照的に、doAfterTerminate
はonError
およびonComplete
のみを対象とします。
doFinally
をdoAfterTerminate
+ doOnCancel
でエミュレートできますが、操作を分割すると、アクションパラメーターが実行され、ide等でないクリーンアップロジックで問題が発生する可能性があります。