如何从版本 3.0.0 升级 bluelinelabs/Conductor 版本 3.1.4
How to upgrade bluelinelabs/Conductor version 3.1.4 from version 3.0.0
我正在尝试从使用 conductor-rxlifecycle
的 3.0.0 版本迁移到 3.1.4 版本使用 conductor-archlifecycle
和 conductor-autodispose
.
我当前的代码具有绑定到生命周期的扩展函数 - 我正在尝试了解将其调整为 archlifecycle 和自动处理所需的代码更改是什么。
我将不胜感激 - 无法从演示代码中找出答案。
protected fun <C : RxController> Completable.bindToController(controller: C): Completable =
observeOn(AndroidSchedulers.mainThread()).compose(controller.bindToLifecycle<Any>())
protected fun <C : RxController> Completable.bindUntil(controller: C, event: ControllerEvent): Completable =
observeOn(AndroidSchedulers.mainThread()).compose(controller.bindUntilEvent<Any>(event))
我假设控制器类型应该是LifecycleController
而不是RxController
,但我不明白bindToLifecycle
的替代是什么
我打开了 this issue,但我也想在这里获得一些帮助
这是我为匹配新的 Conductor 版本而对代码所做的更改:
上面的2个函数被这个函数代替了:
fun Completable.autoDisposable(event: ControllerEvent? = null): CompletableSubscribeProxy =
observeOn(AndroidSchedulers.mainThread())
.autoDisposable(getScopeProvider(event))
请注意,return 类型现在是 CompletableSubscribeProxy
而不是 Completable
,因此调用在链中的位置可能需要更改。
我创建了不同的范围:
private val scopeProvider: ControllerScopeProvider by lazy { ControllerScopeProvider.from(this) }
private val destroyScopeProvider: ControllerScopeProvider by lazy {
ControllerScopeProvider.from(
this,
ControllerEvent.DESTROY
)
}
...
这就是 getScopeProvider
的样子
private fun getScopeProvider(event: ControllerEvent?): ControllerScopeProvider =
when (event) {
null -> scopeProvider
ControllerEvent.DETACH -> detachScopeProvider
ControllerEvent.DESTROY_VIEW -> destroyViewScopeProvider
ControllerEvent.DESTROY -> destroyScopeProvider
else -> throw RuntimeException("Scope for event ${event.name} wasn't created")
}
我正在尝试从使用 conductor-rxlifecycle
的 3.0.0 版本迁移到 3.1.4 版本使用 conductor-archlifecycle
和 conductor-autodispose
.
我当前的代码具有绑定到生命周期的扩展函数 - 我正在尝试了解将其调整为 archlifecycle 和自动处理所需的代码更改是什么。
我将不胜感激 - 无法从演示代码中找出答案。
protected fun <C : RxController> Completable.bindToController(controller: C): Completable =
observeOn(AndroidSchedulers.mainThread()).compose(controller.bindToLifecycle<Any>())
protected fun <C : RxController> Completable.bindUntil(controller: C, event: ControllerEvent): Completable =
observeOn(AndroidSchedulers.mainThread()).compose(controller.bindUntilEvent<Any>(event))
我假设控制器类型应该是LifecycleController
而不是RxController
,但我不明白bindToLifecycle
我打开了 this issue,但我也想在这里获得一些帮助
这是我为匹配新的 Conductor 版本而对代码所做的更改:
上面的2个函数被这个函数代替了:
fun Completable.autoDisposable(event: ControllerEvent? = null): CompletableSubscribeProxy =
observeOn(AndroidSchedulers.mainThread())
.autoDisposable(getScopeProvider(event))
请注意,return 类型现在是 CompletableSubscribeProxy
而不是 Completable
,因此调用在链中的位置可能需要更改。
我创建了不同的范围:
private val scopeProvider: ControllerScopeProvider by lazy { ControllerScopeProvider.from(this) }
private val destroyScopeProvider: ControllerScopeProvider by lazy {
ControllerScopeProvider.from(
this,
ControllerEvent.DESTROY
)
}
...
这就是 getScopeProvider
的样子
private fun getScopeProvider(event: ControllerEvent?): ControllerScopeProvider =
when (event) {
null -> scopeProvider
ControllerEvent.DETACH -> detachScopeProvider
ControllerEvent.DESTROY_VIEW -> destroyViewScopeProvider
ControllerEvent.DESTROY -> destroyScopeProvider
else -> throw RuntimeException("Scope for event ${event.name} wasn't created")
}