📜  Android架构组件中WorkManager概述(1)

📅  最后修改于: 2023-12-03 15:29:22.922000             🧑  作者: Mango

Android架构组件中WorkManager概述

介绍

在Android架构组件库中,WorkManager是专门为后台任务而设计的一个组件。它允许您安排需要在设备空闲时间运行的异步任务,并确保在设备重启后仍能正确执行。

WorkManager具有以下优点:

  • 处理组合多个后台任务
  • 可在重启设备后再次启动
  • 可以在不同的设备上工作
  • 运行在适当的线程上
  • 可以在不同API级别上工作
如何使用

要使用WorkManager,需要遵循以下步骤:

1.导入依赖项

将以下依赖项添加到应用程序build.gradle文件中:

dependencies {
    def work_version = "2.4.0"

    // Java
    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"
}

WorkManager需要运行时库。因此,我们还需要在应用程序build.gradle文件中导入以下依赖项:

dependencies {
    implementation 'androidx.lifecycle:lifecycle-runtime:2.3.0'
}

最后,如果要在设备重启后继续工作,我们需要在应用的清单文件中添加以下权限:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
2.创建Worker类

Worker是基本单位:我们定义需要执行的后台任务。

class MyWorker(context: Context, workerParams: WorkerParameters) :
    Worker(context, workerParams) {

    override fun doWork(): Result {
        // Add work here
        return Result.success()
    }
}
3.触发任务

我们可以使用WorkManager.enqueue()方法触发任务。

val workRequest = OneTimeWorkRequestBuilder<MyWorker>()
    .setInitialDelay(10, TimeUnit.MINUTES)
    .build()

WorkManager.getInstance(context).enqueue(workRequest)

我们可以使用WorkManager.cancelAllWork()或WorkManager.cancelWorkById()取消Work。

总结

WorkManager是一个强大的Android后台任务调度组件,可以用于执行长时间运行的操作,以及需要在应用程序处于后台时完成的操作。它是google为减小安卓机器的耗电量优化而出现的。WorkManager的优点是它可以处理多个异步任务,不受设备状态的影响,并且适用于各种级别的API。