.isDisposed()

时间:2018-10-02 15:06:13

标签: observable rx-java2

我确信我读过某个地方,除非明确调用了.isDisposed(),否则不能保证true返回.dispose()。但是this answer表示在调用true后它总是返回.onComplete(),而this one.doOnDispose()在完成事件后再也不会调用。

我想创建一个Action,如果处置Observable时运行,但如果正常完成则不运行。有什么办法可以保证?关于.isDisposed()的语义的正式答案是什么?在完成后它可能会或可能不会返回true的可能性不是很令人满意。

更新:我正在尝试将Single转换为1个项目Observable。一旦发射了它的物品,它当然会完成。但是我仍然希望它的.dispose()方法触发一个单独的操作:

        mObservable = mSingle
                .toObservable()
                .doOnDispose( () -> {
                    do stuff} );

我将Single转换为Observable的全部原因是能够处理doOnDispose()动作。我是否纠正了Single在发射项目后被拆毁,因此其doOnDispose方法不再可用的问题? (如果我对此有误,可以跳过转换为Observable的步骤)

1 个答案:

答案 0 :(得分:0)

@akarnokd指出了我从未完全理解的一些内容:在subscribe()调用中使用lambda时,在幕后创建了LambdaSubscriber,并在终止时报告isDisposed() true

如果您不想这样做,则必须使用所需的行为显然编写自己的Observer。 AFAIK无法替换默认的LambdaSubscriber