JetPack 之WorkManager
2020-11-15 本文已影响0人
zcwfeng
职能描述
管理和调度可以延迟的,但需要保证执行的后台任务
可延迟
不是必要立即执行,仍有必要在未来完成的任务
例如,发送分析数据场景满足。而发送及时消息就适合。
保证执行
即使设备重启,任务仍然会被执行
例如:1.图片备份就是一个保证执行和延迟执行的用例
2.当服务端有新的数据需要和客户端同步信息的任务,可以发送Firebase后者其他后台消息,把实际的同步任务交给WorkManager
不能也不等同
后台操作不等与线程的概念
WorkManager不能取代,Kotlin 协成,线程池,RxJava,但是可以配合使用
WorkInfo
为了兼容14+的设备
采用JobSchedule+ Executor+(AlarmManager,BroadcastReceiver)
为了保证执行,所有 通过workmanager 管理enqueue的消息都会加入到Workmanager的数据库,所以任务中断也会执行
线程管理
默认使用 非UI线程执行任务
Using Worker(默认)
- doWork()
其他方式
- RxWorker
- CoroutineWorker
- 继承ListenerWorker
任务链
workmanager 可以将多个关联任务放在一个任务链中
比如: 加滤镜图片一,加滤镜图片二,加滤镜图片三
然后压缩----> 批量上传
任务策略
需要重复任务
创建唯一的任务
标记任务
重试策略