[Android]使用WorkManager循环执行任务

使用WorkManager每隔30分钟执行一次任务

这种方式最低适配到SDK=33

Kotlin 复制代码
implementation("androidx.work:work-runtime-ktx:2.9.1")
Kotlin 复制代码
    implementation("androidx.work:work-runtime-ktx:2.9.1")

package com.mofsaas.box_n.ui
import android.content.Context
import androidx.work.*
import androidx.work.ExistingPeriodicWorkPolicy
import androidx.work.WorkManager
import androidx.work.WorkerParameters
import java.util.Calendar
import java.util.concurrent.TimeUnit

/**
 * 监听设备的时间,获取当前是几点钟了。循环获取,每30分钟获取一次时间
 * reMinutes: 重复回调时间(单位:分钟)
 * */
class TimeChecker(private val context: Context, private val reMinutes: Long, private val callback: (String) -> Unit) {

    fun start() {
        val workRequest = PeriodicWorkRequestBuilder<TimeWorker>(reMinutes, TimeUnit.MINUTES)
            .build()

        WorkManager.getInstance(context).enqueueUniquePeriodicWork(
            "TimeWorker",
            ExistingPeriodicWorkPolicy.KEEP,
            workRequest
        )
    }

    inner class TimeWorker(appContext: Context, workerParams: WorkerParameters) : Worker(appContext, workerParams) {
        override fun doWork(): Result {
            val currentTime = Calendar.getInstance().time.toString()
            callback(currentTime)
            return Result.success()
        }
    }
}
Kotlin 复制代码
// 使用示例
val timeChecker = TimeChecker(context) { currentTime ->
    println("Current time: $currentTime")
    // 在这里执行你的逻辑
}

timeChecker.start()
 
相关推荐
踢球的打工仔6 小时前
PHP面向对象(7)
android·开发语言·php
安卓理事人6 小时前
安卓socket
android
安卓理事人12 小时前
安卓LinkedBlockingQueue消息队列
android
万能的小裴同学13 小时前
Android M3U8视频播放器
android·音视频
q***577413 小时前
MySql的慢查询(慢日志)
android·mysql·adb
JavaNoober14 小时前
Android 前台服务 "Bad Notification" 崩溃机制分析文档
android
城东米粉儿15 小时前
关于ObjectAnimator
android
zhangphil15 小时前
Android渲染线程Render Thread的RenderNode与DisplayList,引用Bitmap及Open GL纹理上传GPU
android
火柴就是我16 小时前
从头写一个自己的app
android·前端·flutter
lichong95118 小时前
XLog debug 开启打印日志,release 关闭打印日志
android·java·前端