0%

Android Architecture Components

介绍

Android Architecture Components 是 Google 在 2017 年 11 月推出的解决 Andorid 开发过程中处理据库映射、生命周期管理问题和异步操作等重复性和复杂性高的痛点的组件库集合,主要有: Room,LifeCycle,ViewModel,LiveData,DataBinding,Pageing,Navigation 和 WorkManager。

Room

处理数据库持久化

Entity

1
2
3
4
5
@Entity(tableName = "user")
data class User {
@PrimaryKey
var id: Int? = null
}

Dao

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Dao
interface UserDao {
@get:Query("SELECT * FROM user")
val all: Observable<List<User>>

@Insert(onConflict = REPLACE)
fun insert(user: User)

@Query("DELETE FROM user WHERE id = :id")
fun delete(id: Int?)

@Query("DELETE FROM user")
fun deleteAll()

@Update
fun update(user: User)
}

DataBase

1
2
3
@Database(entities = [User::class], version = 1)
@TypeConverters(IntegerListTypeConverter::class)
abstract class LocalDatabase : RoomDatabase() {...}

LifeCycle

创建可感知当前 ndroid 生命周期状态的组件

ViewModel

承载数据与配置变化

LiveData

向视图层提供可订阅数据

1
2
@Query("select * from user")
fun getAll(): LiveData<List<User>>

DataBinding

允许 Views 订阅 XML 中的数据变化

单向绑定

1
2
3
4
<TextView
android:id="@+id/userTitleTextView"
android:text="@{user.title}"
... />

双向绑定

1
2
3
4
<TextView
android:id="@+id/userTitleTextView"
android:text="@={user.title}"
... />

Paging

Paging 用于处理大量数据显示,相比RecycrViewle更简单

处理导航

WorkManager

处理后台任务,替换JobScheduler确保后台任务执行。由于 Google 在 Android 系统电池优化上工作,Doze modebackground service limits的存在导致后台任务的实现更复杂,WorkManager则屏蔽这些技术细节,提供简单的接口来实现可延时需确保执行的后台任务。