这几天打算写个android程序,但建好项目之后油然而生的无从下手感,让我意识到,作为一名追求程序极致美学的搬砖人民,还是先摸清楚目前主流的android程序结构再下手吧。

逛了一圈CSDN之后,作为一个小白我了解到,目前市场上比较成熟的两种架构思想分别是MVP和MVVM。斟酌之后,我选择了MVVM架构作为我的第一个android程序的架构。

于是我顺藤摸瓜,终于发现了,原来android官方早在GitHub上公布了官方对于MVVM这个架构的理解(GitHub传送门:https://github.com/android/architecture-samples)。

整体架构

我们首先从整体看这个程序的结构(这里不关注Test代码):

image-20200831204959627

可以发现,android官方把整个程序分成了几个部分:

  1. data - 有关数据处理的package

  2. util - 各种自定义工具类

  3. tasks, taskdetail, statistics, addedittask - 各种以功能划分的包含ViewModel和Activity的package

  4. ViewModelFactory - ViewModel工厂

  5. ScrollChildSwipeRefreshLayout - 自定义组件

  6. SingleLiveEvent - 这个很奇怪,里面全是注释,下面是google对这个类的解释:

    Looking for the SingleLiveEvent class? We are now using the Event class.

  7. Event - 对数据进行事件性封装

Data包分析

其实其他的都好理解,但data包中的安排需要分析一波:

image-20200831203339387

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

image-20200831212018062

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