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上的代码。