近年来,谷歌的运用结构不断推陈出新,从MVC,MVP,MVVM,到如今官方引荐运用的MVI架构。作为开发者时间重视着技术的更新迭代,毕竟仍是要靠技术吃饭。今日抱着学习的情绪,咱们一起了解一下Android架构的演进史以及MVI到底有什么优势值得让谷歌官方引荐运用。篇幅较长,请耐性阅览。

MVC

MVC架构是最早接触的Android架构,首要有三部分组成:View ,Model 层,Control 层。

  • View层首要担任UI界面的展现。
  • Model层担任供给界面展现所需求的数据。
  • Control 操控层用来衔接View层与Model层,处理事务逻辑。

咱们来看一下三者之间的联系,如下图:

谷歌官方推荐的MVI架构的基本使用

在MVC架构中,Activity既充任View层又充任Control层,不只担任UI界面的渲染还担任处理复杂的交互逻辑,导致Activity中代码非常臃肿巨大,耦合性高,维护起来非常困难。

MVP

MVP的呈现很好的处理了MVC的一些难点,经过代码分层将Activity中的各项功能隔离开来,以接口回调的形式进行数据通信

谷歌官方推荐的MVI架构的基本使用

在MVP中,Persenter层担任处理复杂的事务逻辑,一起处理Model层传递过来的数据。Model层与Activity之间只能经过Persenter层进行通信,降低了Model层与Activity的代码耦合性。确保了Activity的单一责任准则。可是Persenter层持有Activity中view的引用,处理不当容易发生内存泄漏。另外跟着事务的增多,需求更多的接口进行数据的回调。

MVVM

MVVM是现在运用最普遍的架构。

  • Model层担任供给页面展现需求的数据。
  • View层担任展现页面。
  • ViewModel层担任处理数据。

经过运用Databinding将View层ViewModel之间进行数据双向绑定。View层经过调查ViewModel层的数据改变而自动进行UI改写。而且ViewModel还可以经过Lifecycle自行办理生命周期,及时开释资源,避免发生内存泄漏。

谷歌官方推荐的MVI架构的基本使用

假如只看联系图的话,MVVM与MVP没有什么区别,但实现原理上却不同,MVP经过接口回调的形式,被迫的接收Persenter层传递过来的数据。MVVM是以调查者的身份,经过调查数据的改变自动改写UI。

简略介绍完前面三种架构,那么MVI到底是什么,为什么能让谷歌官方如此引荐?下面咱们经过代码一起来看一下。

MVI首要是借用了前端的思维,经过数据的单向活动将页面状况和事情别离,首要分红以下几个部分:

  • Model :这儿的Model是指页面的状况,如页面加载状况,View控件的显现状况等。而不是MVVM的Model。
  • View : 能够接收Model层的UI status改变,一起也能经过Intent事情对页面进行显现改变
  • Intent : 将用户的操作事情包装成Intent事情,交给Model层进行数据处理。而不是activity中的Intent。

各模块之间的联系如下图:

谷歌官方推荐的MVI架构的基本使用

下面咱们经过实例代码来简要阐明:

谷歌官方推荐的MVI架构的基本使用

  1. 界说网络的三种状况,doSuccess 成功,doFailure 失利,doLoading 加载中。
  2. 新建一个ViewModel类。

谷歌官方推荐的MVI架构的基本使用

谷歌官方推荐的MVI架构的基本使用

初始状况为NetResource.doLoading 加载状况,当网络回来成功或失利时,将状况回调告诉给View层,View层需求对状况进行监听。

  1. View层监听网络数据状况。

谷歌官方推荐的MVI架构的基本使用

依据调查到的不同网络回来状况,进行数据处理或页面展现。

  1. 最终咱们经过用户的操作,界说了三种目的事情。

谷歌官方推荐的MVI架构的基本使用

谷歌官方推荐的MVI架构的基本使用

  1. 用户经过自动触发不同的目的事情,进行不同的网络数据恳求。

谷歌官方推荐的MVI架构的基本使用

  1. 咱们将用户的操作目的封装成NetWorkEvent事情,依据不同的操作进行相对应的事情处理,最终将数据经过同一个Status状况进行处理。

对比MVVM,MVI的数据是单向活动的,从目的到数据恳求,最终反馈给页面处理。页面接收用户的目的事情而发生不同的数据恳求。经过运用同一个状况处理不同的目的事情。形成了一个闭环的事情操作。只需求在View层监听一次,就能够处理不同的目的事情了。

信任看到这儿,你对在Android 中假如运用MVI有了一定了解,然而MVI并不一定便是最好的挑选,依据详细事务挑选适宜的架构才干有效的进步工作效率。