簡體   English   中英

如何從 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版遷移到使用conductor-archlifecycleconductor-autodispose 3.1.4版。

我當前的代碼具有綁定到生命周期的擴展函數 - 我正在嘗試了解將其調整為 archlifecycle 和自動處理所需的代碼更改是什么。

我會很感激這里的一些幫助 - 無法從演示代碼中弄清楚。

conductor-archlifecycle演示

conductor-autodispose演示

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

我假設 controller 類型應該是LifecycleController而不是RxController ,但我不明白bindToLifecycle的替代品是什么

我打開了這個問題,但我也想在這里獲得一些幫助

這是我為匹配新的 Conductor 版本而對代碼所做的更改:

上面的兩個函數被這個 function 取代了:

    fun Completable.autoDisposable(event: ControllerEvent? = null): CompletableSubscribeProxy =
    observeOn(AndroidSchedulers.mainThread())
        .autoDisposable(getScopeProvider(event))

請注意,返回類型現在是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")
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM