Android的AAC架构

AAC Android Architecture Components的简称,是一套用来搭建具有生命周期感知架构的系列组件,在2017年 GoogleI/O大会上发布。

dependencies {
    def lifecycle_version = "2.2.0"

    implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
    ...
}

AAC对于我来说,目前应用最常使用Lifecycle、LiveData和ViewModel。

1.Lifecycle一看就是用来管理生命周期的,它负责将Activity/Fragment的生命周期同步给其它模块,主要饱含三种角色:

Lifecycle:生命周期本身,其它模块(LifecycleObserver)可以对其进行观测,以便在状态发生变化时接收通知,同时也可以主动从这里获取当前状态。

LifecycleOwner:Lifecycle的持有者,一般为上下文对象,比如Activity和Fragment,因为生命周期就是从它们这里同步出去的。

LifecycleObserver:生命周期观察者,观察者通过向Lifecycle注册来监听生命周期的变化。

2.LiveData是一个可被观察的数据持有者,即它既是一个Observable(被观察者/发布者),同时持有数据模型(或者本身作为数据模型也可以),它的Observer(观察者)通常都是控制层对象(如Activity或Fragment)。与一般的Observable不同,LiveData能知道Observer的生命周期变化,这意味着它能同步到Activity、Fragment等组件的生命周期,这确保了LiveData只更新处于活跃状态的Observer。

3.ViewModel被设计用于存储和管理UI变化相关的数据,它允许屏幕横竖屏切换后数据仍然得到保存。ViewModel不应该持有任何View,生命周期相关的类,或者可能持有包含生命周期相关功能的类。如不能持有activity,fragment或者context等。

4.Room,基于SQLite的数据库,通过Room可以避免写重复的模版代码。

以下是ACC部分组件的组成 。

ACC的核心思想数据与表现层进行分离,当数据发生变化时,不会影响到表现层。

以后会继续补充给大家github上的代码。