Google Android TodoList MVVM 架构分析
这几天打算写个android程序,但建好项目之后油然而生的无从下手感,让我意识到,作为一名追求程序极致美学的搬砖人民,还是先摸清楚目前主流的android程序结构再下手吧。
逛了一圈CSDN之后,作为一个小白我了解到,目前市场上比较成熟的两种架构思想分别是MVP和MVVM。斟酌之后,我选择了MVVM架构作为我的第一个android程序的架构。
于是我顺藤摸瓜,终于发现了,原来android官方早在GitHub上公布了官方对于MVVM这个架构的理解(GitHub传送门:https://github.com/android/architecture-samples)。
整体架构
我们首先从整体看这个程序的结构(这里不关注Test代码):

可以发现,android官方把整个程序分成了几个部分:
-
data - 有关数据处理的package
-
util - 各种自定义工具类
-
tasks, taskdetail, statistics, addedittask - 各种以功能划分的包含ViewModel和Activity的package
-
ViewModelFactory - ViewModel工厂
-
ScrollChildSwipeRefreshLayout - 自定义组件
-
SingleLiveEvent - 这个很奇怪,里面全是注释,下面是google对这个类的解释:
Looking for the SingleLiveEvent class? We are now using the Event class.
-
Event - 对数据进行事件性封装
Data包分析
其实其他的都好理解,但data包中的安排需要分析一波:

我们可以发现,其实对于一个数据来说,它的生命周期可以根据下面的流程图来进行分析:

这么一来,google的官方MVVM架构就分析得差不多了。纸上得来终觉浅,绝知此事要躬行,实践去了(逃