[英]How to upgrade bluelinelabs/Conductor version 3.1.4 from version 3.0.0
我正在嘗試從使用conductor-rxlifecycle
的3.0.0版遷移到使用conductor-archlifecycle
和conductor-autodispose
3.1.4版。
我當前的代碼具有綁定到生命周期的擴展函數 - 我正在嘗試了解將其調整為 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))
我假設 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.