如何从版本 3.0.0 升级 bluelinelabs/Conductor 版本 3.1.4

How to upgrade bluelinelabs/Conductor version 3.1.4 from version 3.0.0

我正在尝试从使用 conductor-rxlifecycle3.0.0 版本迁移到 3.1.4 版本使用 conductor-archlifecycleconductor-autodispose.

我当前的代码具有绑定到生命周期的扩展函数 - 我正在尝试了解将其调整为 archlifecycle 和自动处理所需的代码更改是什么。

我将不胜感激 - 无法从演示代码中找出答案。

conductor-archlifecycle demo

conductor-autodispose demo

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")
    }