[译]使用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(八):导航相关推荐
- [译]使用MVI打造响应式APP(三):状态折叠器
原文:REACTIVE APPS WITH MODEL-VIEW-INTENT - PART3 - STATE REDUCER 作者:Hannes Dorfmann 译者:却把清梅嗅 在上一章节中,我 ...
- [译]使用MVI打造响应式APP[七]:掌握时机(SingleLiveEvent问题)
原文:REACTIVE APPS WITH MODEL-VIEW-INTENT - PART7 - TIMING (SINGLELIVEEVENT PROBLEM) 作者:Hannes Dorfman ...
- Bootstrap实现的响应式APP下载页面代码
这次分享的是,一个设计优雅的APP下载页面主题,这套HTML是用当下最流行的Bootstrap框架实现的版本是v3.3.3,这套代码非常适合再次开发,代码简介没有多余的部分,结构组织清晰,代码注释完整 ...
- Bootstrap页面布局16 - BS导航菜单和其响应式布局以及导航中的下拉菜单
代码: <div class='container-fluid'><h2 class='page-header'>导航</h2><!-- .navrbar n ...
- html纵向固定导航菜单代码,jQuery和css3响应式垂直固定导航菜单插件
这是一款非常实用的jQuery和css3响应式垂直固定导航菜单插件.当你的页面上有很多的内容,用户需要花费大量的时间才能找到他们想要的内容.这个垂直固定导航菜单插件能够为页面提供一个内容预览,使用户能 ...
- html5响应式导航条,10个响应式设计的导航菜单源码-附教程
10个响应式设计的导航菜单源码-附教程 Sponsor 在2013年里,响应式Web设计将会开始普及,我们应该学习这些新技术,尤其作为网页设计师和前端开发人员,学习CSS3样式表和HTML5是必不可少 ...
- html5 box布局,使用Flexbox打造响应式网页网格布局
CSS3的Flexbox可以非常容易的制作出各种布局效果.前面我们已经结束了flexbox的基本使用方法,水平布局和垂直布局方法.这篇文章我们来看看如果制作具有响应式效果的flexbox双列网格布局效 ...
- 【译】什么是响应式编程
(原文地址:https://medium.com/@kevalpatel2106/what-is-reactive-programming-da37c1611382) . 现今,人 ...
- 响应式多级菜单 侧边菜单栏_大菜单,小屏幕:响应式,多级导航
响应式多级菜单 侧边菜单栏 如果您曾经在响应式网站上工作,那么毫无疑问,您必须解决这个新兴领域中最棘手的问题之一:导航. 对于简单的导航,解决方案可以很简单. 但是,如果您要处理的事情比较复杂,可能有 ...
最新文章
- pta 整型关键字的平方探测法散列
- HashTable已经被淘汰了,不要在代码中再使用它
- 剑网3 最新服务器,《剑网3》各服务器IP及所在地
- std::map用法总结
- linux 那些事儿之我是 u 盘,《Linux那些事儿之我是USB》.PDF
- Python组合列表中多个整数得到最小整数(一个算法的巧妙实现)
- Python语言概述
- 如何使用QT实现左右滑动的按钮
- 【解决】路由器设置成交换机使用
- 【U盘刷机】小米路由器变砖如何100%刷机成功
- HTTP响应的内容类型之Content-Type
- Python matplotpy颜色表(python画图常用颜色)
- Android零基础开发到项目实战
- FFmpeg[18] - mac解决yasm/nasm not found or too old. Use --disable-yasm for a crippled build.
- GUI线程安全详解(三)
- php奥运金牌排序代码,Excel | 用奥运奖牌榜学习排序排名
- 树莓派购买指南(新手入门)
- maven 爆红,Could not transfer artifact xxx错误解决
- 10G网络变压器厂家告诉你10G以太网主要有哪些特点
- LeetCode刷题之路:1049. 最后一块石头的重量 II
热门文章
- C#学习(10)-----事件
- Android 打开网页之CustomTabs
- 『政善治』Postman工具 — 18、NewMan的使用
- 在小故事中懂得10之内加法减法
- 51nod-1299 监狱逃离(贪心)
- 青少年软件编程C++一级题库(51-60)
- 想要支持扩展的手机浏览器?狐猴浏览器你绝对不能错过
- 1000A+B输入输出练习
- 通过python获取自己的手机话费_Python批量获取并保存手机号归属地和运营商的示例...
- J0ker的CISSP之路: How CISSP(1)