WorkManager

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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容