美文网首页
《Android WorkManager 使用手册》一 ---

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

作者: R7_Perfect | 来源:发表于2019-09-28 15:10 被阅读0次

Android 中异步循环的几种:

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

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

关键点:

  • API 14及以上
    • API 23+设备上使用JobScheduler
    • API 14-22上用BroadcastReceiver + AlarmManager
  • 根据网络可用性和电池状况,WorkManager 会有不同限制
  • 可以一次性或周期性安排任务
  • 可以监视和管理任务
  • 形成任务链管理任务
  • app或者设备重启后还能确保任务执行
  • 省电

WorkManager可用于可延迟的任务

  • 向后端服务发送日志或分析
  • 定期将app数据与服务器同步

不适用

  • 应用离开时可以安全终止的任务
  • 立即执行的任务
将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函数的结果:

  • Result.success() 成功
  • Result.failure() 失败
  • Result.retry() 在某个时间点重新发起
创建一个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作详细介绍

相关文章

网友评论

      本文标题:《Android WorkManager 使用手册》一 ---

      本文链接:https://www.haomeiwen.com/subject/ktfjyctx.html