1.特点
1.立即执行:必须立即开始且很快就完成的任务,可以加急。
2.长时间运行:运行时间可能较长(有可能超过 10 分钟)的任务。
3.可延期执行:延期开始并且可以定期运行的预定任务。
2.导库
implementation "androidx.work:work-runtime:2.7.1"
3.定义工作
工作使用 Worker类定义。
doWork() 方法在 WorkManager 提供的后台线程上异步运行。
public class MyWork extends Worker {
final static String TAG = "MyWork";
public MyWork(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}
@NonNull
@Override
public Result doWork() {
Data inputData = getInputData();
String name = inputData.getString("name");
Log.d(TAG, "doWork inputData: " + name);
Log.d(TAG, "currentThread: "+Thread.currentThread());
return Result.success();
}
}
从 doWork() 返回的 Result 会通知 WorkManager 服务工作是否成功,以及工作失败时是否应重试工作。
-
Result.success()
:工作成功完成。 -
Result.failure()
:工作失败。 -
Result.retry()
:工作失败,应根据其重试政策在其他时间尝试。
4.创建WorkRequest
WorkRequest myWork = new OneTimeWorkRequest.Builder(MyWork.class).build();
5.将 WorkRequest 提交给系统
WorkManager.getInstance(myContext).enqueue(myWork);