Jetpack学习-8-WorkManager

WorkManager是什么

运行可推迟的后台工作。根据设备API情况,自动选择JobScheduler或AlarmManager来实现后台任务,在应用推出之后还可以继续执行。
Worker任务的执行者,抽象类,需要执行的具体任务,需要实现doWork执行在单独的后台线程里。
doWork的返回值:

  • Worker.Result.SUCCESS 任务执行成功
  • Worker.Result.FAILURE 任务执行失败
  • Worker.Result.RETRY 任务需要重新执行,需要与WorkRequest.Builder中的setBackoffCirteria()一起使用

简单使用

引入WorkManager

dependencies {
    implementation 'androidx.work:work-runtime:2.4.0'
}

自定义Worker

public class UploadWorker extends Worker {
    private static final String TAG = "UploadWorker-";

    public UploadWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
        super(context, workerParams);
    }

    @NonNull
    @Override
    public Result doWork() {
        // 子线程
        Log.d(TAG, "doWork: " + (Looper.getMainLooper() == Looper.myLooper()));
        return Result.success();
    }
}

执行任务

public class WorkerActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_worker);

        OneTimeWorkRequest request = new OneTimeWorkRequest.Builder(UploadWorker.class).build();
        WorkManager.getInstance(getApplicationContext()).enqueue(request);
    }
}

原理

WorkManager管理任务请求和任务队列,WorkRequest加入任务队列。通过WorkManager来调度任务,分散系统资源负载。

你可能感兴趣的:(Jetpack学习-8-WorkManager)