我确信我读过某个地方,除非明确调用了.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
的步骤)
答案 0 :(得分:0)
@akarnokd指出了我从未完全理解的一些内容:在subscribe()
调用中使用lambda时,在幕后创建了LambdaSubscriber
,并在终止时报告isDisposed() true
。
如果您不想这样做,则必须使用所需的行为显然编写自己的Observer
。 AFAIK无法替换默认的LambdaSubscriber
。