dependencies {
// 其他依赖配置
def work_version = “1.0.0-beta02”
implementation “android.arch.work:work-runtime:$work_version”
}
可以在https://developer.android.com/topic/libraries/architecture/adding-components#workmanager获取当前的work-runtime版本并且设置正确的版本号。
WorkManager主要类及使用
如下图给出了WorkManager中主要的类以及关系图,黄色区域是最主要的三个类,构成了WorkManager的基本框架,红色部分和绿色部分是关联的黄色部分的具体实现或者类里面包含一些规则或数据。
1、Worker处理要执行的任务的具体逻辑。
2、WorkerRequest代表一个独立的可以执行的任务,以及任务执行时的条件和规则,比如说任务执行一次还是多次以及任务的触发条件是什么任务有什么约束等。
3、WorkManager提供队列将要执行的WorkerRequest放到队列中管理和执行。
如下图,三个主要类的关系:
下面分别介绍三个类的作用和使用方法。
Worker
Worker是一个抽象类,当有一个要执行的任务的时候可以继承Worker类,重写doWork()方法在doWork()方法中实现具体任务的逻辑。
public class MyWorker extends Worker {
public MyWorker(
@NonNull Context appContext,
@NonNull WorkerParameters workerParams) {
super(appContext, workerParams);
}
@NonNull
@Override
public Worker.Result doWork() {
Context applicationContext = getApplicationContext();
try {
Bitmap picture = BitmapFactory.decodeResource(
applicationContext.getResources(),
R.drawable.test);
return Worker.Result.SUCCESS;
} catch (Throwa