jetpack主要由基础、架构、⾏为、界⾯这4个部分组成。
ViewModel专门⽤于存放与界⾯相关的数据的。
ViewModel的生命周期:
创建 ViewModel的实例是⼀定要通过ViewModelProvider来获取ViewModel的实例,具体语法规则如下: lifecycle.currentState 返回的⽣命周期状态是⼀个枚举类型,⼀共有 INITIALIZED 、 DESTROYED 、 CREATED 、 STARTED 、 RESUMED 这 5 种状态类型
LiveData
getValue() ⽅法⽤于获取LiveData 中包含的数据; setValue() ⽅法⽤于给 LiveData 设置数据,但是只能在主线程中调⽤; postValue() ⽅法⽤于在⾮主线程中给LiveData设置数据。 map() ⽅法的作⽤是将实际包含数据的LiveData和仅⽤于观察数据的LiveData进⾏转换。 map() ⽅法接收 两个 参数:第⼀个参数是原始的LiveData对象;第⼆个参数是⼀个转换函数,我们在转换函数⾥编写具体的转换逻辑即可。Room主要由Entity、Dao和Database这3部分组成
Entity。⽤于定义封装实际数据的实体类,每个实体类都会在数据库中有⼀张对应的表,并且表中的列是根据实体类中的字段⾃动⽣成的。
在类名上使⽤@Entity注解,将其声明成⼀个实体类
Dao 。 Dao 是数据访问对象的意思,通常会在这⾥对数据库的各项操作 进⾏封装,在实际编程的时候,逻辑层就不需要和底层数据库打交道了,直接和Dao 层进⾏交互即可。 Database 。⽤于定义数据库中的关键信息,包括数据库的版本号、包含哪些实体类以及提供Dao 层的访问实例。 WorkManager 的基本⽤法: (1) 定义⼀个后台任务,并实现具体的任务逻辑; (2) 配置该后台任务的运⾏条件和约束信息,并构建后台任务请求; (3) 将该后台任务请求传⼊ WorkManager 的 enqueue() ⽅法中,系统会在合适的时间运⾏。 OneTimeWorkRequest.Builder 是 WorkRequest.Builder 的⼦类,⽤于构建 单次 运⾏的后台任务请求。另外⼀个⼦类 PeriodicWorkRequest.Builder,⽤于构建 周期性运⾏的后台任务请求,传⼊的运⾏周期间隔 不能短于15分钟 让后台任务在指定的延迟时间后运⾏,需要借助 setInitialDelay() ⽅法 Result.retry()可以结合 setBackoffCriteria()⽅法来重新执⾏任务setBackoffCriteria()⽅法接收 3个参数:第⼆个和第三个参数⽤于指定在多久之后重新执⾏任务,时间最短不能少于10秒钟;第⼀个参数则⽤于指定如果任务再次执⾏失败,下次重试的时间应该以什么样的形式延迟。 第⼀个参数的可选值有两种,分别是 LINEAR 和 EXPONENTIAL ,前者代表下次重试时间以线性的⽅式延迟,后者代表下次重试时间以指数的⽅式延迟。