WorkManager 使用入门

如需开始使用 WorkManager,请先将库导入您的 Android 项目中。
将以下依赖项添加到应用的 build.gradle 文件中:

dependencies {
    val work_version = "2.7.1"

    // (Java only)
    implementation("androidx.work:work-runtime:$work_version")

    // Kotlin + coroutines
    implementation("androidx.work:work-runtime-ktx:$work_version")

    // optional - RxJava2 support
    implementation("androidx.work:work-rxjava2:$work_version")

    // optional - GCMNetworkManager support
    implementation("androidx.work:work-gcm:$work_version")

    // optional - Test helpers
    androidTestImplementation("androidx.work:work-testing:$work_version")

    // optional - Multiprocess support
    implementation "androidx.work:work-multiprocess:$work_version"
}

添加依赖项并同步 Gradle 项目后,下一步便是定义一些要运行的工作。

注意:您随时都可以在 WorkManager 版本页面上找到最新版本的 WorkManager,包括 Beta 版、Alpha 版和候选版本。

定义工作

工作使用 Worker 类定义。doWork() 方法在 WorkManager 提供的后台线程上异步运行。

如需为 WorkManager 创建一些要运行的工作,请扩展 Worker 类并替换 doWork() 方法。例如,如需创建上传图像的 Worker,您可以执行以下操作:

class UploadWorker(appContext: Context, workerParams: WorkerParameters):
       Worker(appContext, workerParams) {
   override fun doWork(): Result {

       // Do the work here--in this case, upload the images.
       uploadImages()

       // Indicate whether the work finished successfully with the Result
       return Result.success()
   }
}

创建 WorkRequest

定义工作后,必须使用 WorkManager 服务进行调度该工作才能运行。对于如何调度工作,WorkManager 提供了很大的灵活性。您可以将其安排为在某段时间内定期运行,也可以将其安排为仅运行一次。

不论您选择以何种方式调度工作,请始终使用 [WorkRequest](https://developer.android.com/reference/androidx/work/WorkRequest?hl=zh-cn)Worker 定义工作单元,[WorkRequest](https://developer.android.com/reference/androidx/work/WorkRequest?hl=zh-cn)(及其子类)则定义工作运行方式和时间。在最简单的情况下,您可以使用 [OneTimeWorkRequest](https://developer.android.com/reference/androidx/work/OneTimeWorkRequest?hl=zh-cn),如以下示例所示。

val uploadWorkRequest: WorkRequest =
   OneTimeWorkRequestBuilder()
       .build()

将 WorkRequest 提交给系统

最后,您需要使用 enqueue() 方法将 WorkRequest 提交到 WorkManager。

WorkManager
    .getInstance(myContext)
    .enqueue(uploadWorkRequest)

执行工作器的确切时间取决于 WorkRequest 中使用的约束和系统优化方式。WorkManager 经过设计,能够在满足这些约束的情况下提供最佳行为。

https://github.com/android/architecture-components-samples/tree/main/WorkManagerSample

你可能感兴趣的:(WorkManager 使用入门)