如何解决Android Kotlin:定期工作管理器未在后台定期运行该功能
我正在使用 Kotlin 和 Android Studio 构建一个 Android 应用。即使应用程序已死或完全关闭,我也试图运行后台任务。我正在使用工作管理器。但它似乎只运行了一次。
这是我的工人班。
import android.content.Context
import android.util.Log
import androidx.work.Worker
import androidx.work.WorkerParameters
class RegisterReceiversWorker(context: Context,workerParams: WorkerParameters): Worker(context,workerParams) {
companion object {
const val WORK_NAME: String = "REGISTER_RECEIVERS_WORKER"
}
override fun doWork(): Result {
registerReceivers()
return Result.success();
}
private fun registerReceivers() {
Log.i("REGISTER_RECEIVER","Greeting from the background")
}
}
正如您在代码中看到的,我正在 logcat 中打印一条消息。
然后我在第一次打开应用程序时在 MainActivity 中按如下方式启动工作程序。
val workRequest = PeriodicWorkRequestBuilder<RegisterReceiversWorker>(10,TimeUnit.SECONDS).build()
val workManager = WorkManager.getInstance(applicationContext)
workManager.enqueueUniquePeriodicWork(RegisterReceiversWorker.WORK_NAME,ExistingPeriodicWorkPolicy.REPLACE,workRequest);
如您所见,它应该每十秒打印一次消息。但是当我运行该应用程序时,它会在 logcat 中打印出消息,仅一次。我的代码有什么问题?即使应用程序关闭,我如何确保它在后台每 10 秒运行一次?
解决方法
周期性工作需要安排在比 MIN_PERIODIC_INTERVAL_MILLIS
更长的时间间隔内。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。