• 网赌被黑找腾龙D哥出黑【微信:JLYL78999 QQ:840093333】

    原文:REACTIVE APPS WITH MODEL-VIEW-INTENT - PART 8 - NAVIGATION
    作者:Hannes Dorfmann
    译者:却把清梅嗅

    上一篇博客中,我们探讨了协调模式是如何在Android中应用的。这次我想展示如何在Model-View-Intent中使用它。

    如果您还不知道协调器模式是什么,我强烈建议您回过头来阅读上文内容

    MVI中应用此模式与MVVMMVP没有太大区别:我们将lambda作为导航的回调传递给我们的MviBasePresenter。有趣的是我们如何在状态驱动的架构中触发这些回调?我们来看一个具体的例子:

    class FooPresenter(
      private var navigationCallback: ( () -> Unit )?
    ) : MviBasePresenter<FooView> {  
      lateinit var disposable : Disposable
      override 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 // 避免内存泄漏
      }
    }
    

    其思想是:通过RxJavashare() 操作符,我们对通常用来对View层渲染状态的Observable进行复用,再加上通过与 .filter() 操作符的组合使用,达到能够监听到确定的状态,这之后,当我们观察到该状态时,触发对应的导航操作,然后协调器模式就像我之前的博客文章中描述的那样进行工作。


    系列目录

    《使用MVI打造响应式APP》原文

    《使用MVI打造响应式APP》译文

    《使用MVI打造响应式APP》实战


    关于我

    Hello,我是却把清梅嗅,如果您觉得文章对您有价值,欢迎 ❤️,也欢迎关注我的博客或者Github

    如果您觉得文章还差了那么点东西,也请通过关注督促我写出更好的文章——万一哪天我进步了呢?

    网赌被黑找腾龙D哥出黑【微信:JLYL78999 QQ:840093333】

    发布评论

    分享到:

    专业出黑网赌被黑追款

    我的微信号:18488351249 (左侧二维码扫一扫)欢迎添加!

    用python自制微信机器人,定时发送天气预报
    你是第一个吃螃蟹的人
    发表评论

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。