阅读笔记

117 阅读1分钟

一、认识MVI

1.1、MVI是什么?

是在MVC,MVP,MVVM基础上发展起来的一种架构思想,而在wanandroid的kotlin版本中,用到的就是这种思想。MVI全程为Model-View-Intent,是一种单向数据流的设计思想,非常适合数据驱动型的UI展示项目

1.2、模块介绍

Model:
    与其他MVVM中的Model不同的是,MVI的Model主要指UI状态(State)。当前界面展示的内容无非就是UI状态的一个快照:例如数据加载过程、控件位置等都是一种UI状态
View:
    与其他MVX中的View一致,可能是一个Activity、Fragment或者任意UI承载单元。MVI中的View通过订阅Intent的变化实现界面刷新
Intent:
    此Intent不是Activity的Intent,用户的任何操作都被包装成Intent后发送给Model进行数据请求

1.3、数据流向

用户操作以Intent的形式通知Model => Model基于Intent更新State => View接收到State变化刷新UI
也就是说一个view对应一个State,根据State来更新UI

1.4、优缺点分析

优点
    UI的所有变化来自State,所以只需聚焦State,架构更简单易于调试
    数据单向流动,很容易对状态变化进行跟踪和回溯
    UI只是反应State的变化,没有额外逻辑,可以被轻松替换或复用
缺点
    所有的操作最终都会转换成State,所以当复杂页面的State容易膨胀

二、代码示例

2.1、实现一个列表类型的页面

android-architecture-main

三、官网

MVI MVI中文官网