Rx java 在onDispose期间对RxJava链中的对象执行操作

Rx java 在onDispose期间对RxJava链中的对象执行操作,rx-java,rx-java2,Rx Java,Rx Java2,我有一个像这样的RxJava链: Single.timer(500, TimeUnit.MILLISECONDS) .map { createMyObject() } .doOnDispose { // how to access MyObject here? I want to call: myObject.dismiss() } .subscribe { myObject -> // do someth

我有一个像这样的RxJava链:

Single.timer(500, TimeUnit.MILLISECONDS)
    .map { createMyObject() }
    .doOnDispose {
         // how to access MyObject here? I want to call:
         myObject.dismiss()
    }
    .subscribe { myObject ->
        // do something with myObject
    }
但是,
.doOnDispose
需要一个
操作
而不是
消费者
,因此我无法访问其中先前映射的
myObject

我现在要做的是在Rx链之外有一个外部可调零变量来保存对象:

var myObject: MyObject? = null
Single.timer(500, TimeUnit.MILLISECONDS)
    .map { 
         myObject = createMyObject() 
         return@map myObject
    }
    .doOnDispose {
         myObject?.dismiss()
    }
    .subscribe { myObject ->
        // do something with myObject
    }

但我不喜欢把它暴露在外链的想法。有更好的方法吗?

您可能应该使用
Single.use
在适当的时候正确处理dispose操作

差不多

Single.using({createMyObject()}, {something(it)}, {it.dismiss}).subscribe{...}