以下是 androidx.work:work-runtime-ktx 的常见用法示例,结合 Kotlin 特性展示如何简化后台任务开发:

WorkManager常见的使用说明 在包androidx.work:work-runtime-ktx_数据_02

一、一次性任务(最简单场景)

场景:

点击按钮后,调度一个后台任务(如打印日志或网络请求),任务无需重复执行。

代码实现:
  1. 定义 Worker(使用 CoroutineWorker 简化协程处理)
    kotlin
class SimpleWorker(
    context: Context,
    params: WorkerParameters
) : CoroutineWorker(context, params) {
          
          
    override suspend fun doWork(): Result {
          
          
        // 模拟耗时操作(如延迟 2 秒)
        delay(2000)
        Log.d("WorkManager", "SimpleWorker 执行完成")
        return Result.success() // 任务成功
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  1. 调度任务(在 Activity/Fragment 中)
    kotlin
// 构建任务(使用 KTX 链式配置)
val workRequest = OneTimeWorkRequestBuilder<SimpleWorker>()
    .setInitialDelay(1, TimeUnit.SECONDS) // 延迟 1 秒执行
    .build()

// 提交任务(KTX 扩展函数 `enqueue`)
WorkManager.getInstance(this).enqueue(workRequest)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

二、周期性任务(定时执行)

场景:

每天早上 9 点执行数据同步任务,使用唯一任务名避免重复调度。

代码实现:

kotlin

// 定义周期性 Worker
class DailySyncWorker(
    context: Context,
    params: WorkerParameters
) : CoroutineWorker(context, params) {
          
          
    override suspend fun doWork(): Result {
          
          
        // 执行数据同步逻辑
        Log.d("WorkManager", "每日数据同步完成")
        return Result.success()
    }
}

// 调度任务(在 Application 或初始化位置)
val dailyRequest = DailyWorkRequestBuilder<DailySyncWorker>(