[译]使用MVI打造响应式APP(八):导航
原文:REACTIVE APPS WITH MODEL-VIEW-INTENT - PART 8 - NAVIGATION
作者:Hannes Dorfmann
譯者:卻把清梅嗅
在上一篇博客中,我們探討了協調模式是如何在Android中應用的。這次我想展示如何在Model-View-Intent中使用它。
如果您還不知道協調器模式是什么,我強烈建議您回過頭來閱讀上文內容。
在MVI中應用此模式與MVVM或MVP沒有太大區別:我們將lambda作為導航的回調傳遞給我們的MviBasePresenter。有趣的是我們如何在狀態驅動的架構中觸發這些回調?我們來看一個具體的例子:
class FooPresenter(private var navigationCallback: ( () -> Unit )? ) : MviBasePresenter<FooView> { lateinit var disposable : Disposableoverride fun bindIntents(){val intent1 = ...val intent2 = ...val intents = Observable.merge(intent1, intent2)val state = intents.switchMap { ... }// 這里就是有趣的部分val sharedState = state.share()disposable = sharedState.filter{ state ->state is State.Foo}.subscribe { navigationCallback!!() }subscribeViewState(sharedState, FooView::render)}override fun unbindIntents(){disposable.dispose() // disposable 導航navigationCallback = null // 避免內存泄漏} }其思想是:通過RxJava的 share() 操作符,我們對通常用來對View層渲染狀態的Observable進行復用,再加上通過與 .filter() 操作符的組合使用,達到能夠監聽到確定的狀態,這之后,當我們觀察到該狀態時,觸發對應的導航操作,然后協調器模式就像我之前的博客文章中描述的那樣進行工作。
系列目錄
《使用MVI打造響應式APP》原文
- Part 1: Model
- Part 2: View and Intent
- Part 3: State Reducer
- Part 4: Independent UI Components
- Part 5: Debugging with ease
- Part 6: Restoring State
- Part 7: Timing (SingleLiveEvent problem)
- Part 8: In-App Navigation
《使用MVI打造響應式APP》譯文
- [譯]使用MVI打造響應式APP(一):Model到底是什么
- [譯]使用MVI打造響應式APP[二]:View層和Intent層
- [譯]使用MVI打造響應式APP[三]:狀態折疊器
- [譯]使用MVI打造響應式APP[四]:獨立性UI組件
- [譯]使用MVI打造響應式APP[五]:輕而易舉地Debug
- [譯]使用MVI打造響應式APP[六]:恢復狀態
- [譯]使用MVI打造響應式APP[七]:掌握時機(SingleLiveEvent問題)
- [譯]使用MVI打造響應式APP[八]:導航
《使用MVI打造響應式APP》實戰
- 實戰:使用MVI打造響應式&函數式的Github客戶端
關于我
Hello,我是卻把清梅嗅,如果您覺得文章對您有價值,歡迎 ??,也歡迎關注我的博客或者Github。
如果您覺得文章還差了那么點東西,也請通過關注督促我寫出更好的文章——萬一哪天我進步了呢?
- 我的Android學習體系
- 關于文章糾錯
- 關于知識付費
總結
以上是生活随笔為你收集整理的[译]使用MVI打造响应式APP(八):导航的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql加密函数password
- 下一篇: html中ol和li,HTML ol和l