应用程序关闭/终止时 WorkManager 不运行

Gol*_*ken 5 android android-wake-lock android-workmanager

我试图使用 WorkManager 每 10 秒运行一个简单的工作。当应用程序在后台或前台运行时,它可以完美运行。当我关闭应用程序(杀死应用程序)时,该工作将不再被调用。

我在创建 MainActivity 时调用以下代码

fun scheduleNotification(context: Context) {
    val workRequest = OneTimeWorkRequest.Builder(NotificationWorker::class.java).setInitialDelay(10000, TimeUnit.MILLISECONDS)
    WorkManager.getInstance().enqueueUniqueWork("NotificationWorker", ExistingWorkPolicy.REPLACE, workRequest.build())
    Log.d("NotificationWorker", "start")
}
Run Code Online (Sandbox Code Playgroud)

工人阶级

class NotificationWorker(context: Context, params: WorkerParameters) : Worker(context, params) {

override fun doWork(): Result {
    Log.d("NotificationWorker", "Working")
    NotificationUtil.scheduleNotification(applicationContext) // n times
    return Result.success()
}
}
Run Code Online (Sandbox Code Playgroud)

当我的应用程序未关闭时,这些代码运行良好。

即使应用程序关闭,我怎样才能让它运行?

小智 -3

我建议您对需要定期执行的任务使用PeriodicWorkRequest。请在此处查看详细信息。

https://developer.android.com/topic/libraries/architecture/workmanager/how-to/recurring-work

  • 在这种情况下,您不能使用“PeriodicWorkRequest”,因为最小间隔为 15 分钟。 (2认同)