1.特點
1.立即執(zhí)行:必須立即開始且很快就完成的任務(wù)秋忙,可以加急凯旭。
2.長時間運行:運行時間可能較長(有可能超過 10 分鐘)的任務(wù)凫海。
3.可延期執(zhí)行:延期開始并且可以定期運行的預(yù)定任務(wù)胰蝠。
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 服務(wù)工作是否成功弹谁,以及工作失敗時是否應(yīng)重試工作蹦掐。
-
Result.success()
:工作成功完成。 -
Result.failure()
:工作失敗僵闯。 -
Result.retry()
:工作失敗卧抗,應(yīng)根據(jù)其重試政策在其他時間嘗試。
4.創(chuàng)建WorkRequest
WorkRequest myWork = new OneTimeWorkRequest.Builder(MyWork.class).build();
5.將 WorkRequest 提交給系統(tǒng)
WorkManager.getInstance(myContext).enqueue(myWork);