《Android WorkManager 使用手册》一 ---

2019-09-28  本文已影响0人  R7_Perfect

Android 中异步循环的几种:

  1. Timer
  2. Handler加Thread
  3. Rxjava
    这里要介绍的是Android官方组件 WorkManager

WorkManager API 可以让异步循环变得很容易,即使app退出或者重新启动,这些任务仍会运行

关键点:

WorkManager可用于可延迟的任务

不适用

将WorkManager加到你的工程

build.gradle中添加:

dependencies {
  def work_version = "2.2.0"

    // (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"
  }
创建一个后台任务
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 task finished successfully with the Result
        return Result.success()
    }
}

Result返回的是doWork函数的结果:

创建一个WorkRequest去运行Worker

有OneTimeWorkRequest和PeriodicWorkRequest

val uploadWorkRequest = OneTimeWorkRequestBuilder<UploadWorker>().build()

workrequest还可以包含额外信息,例如任务运行时的约束、工作的输入、延迟和重试工作的策略。这些选项可参考https://developer.android.com/topic/libraries/architecture/workmanager/how-to/define-work

程序执行任务

定义完workrequest,就可以用WorkManager的enqueue()方法执行它

WorkManager.getInstance(myContext).enqueue(uploadWorkRequest)

下一章针对WorkRequest作详细介绍

上一篇 下一篇

猜你喜欢

热点阅读