应用程序关闭/终止时,WorkManager无法运行

时间:2019-05-31 04:52:21

标签: android android-workmanager android-wake-lock

我正在尝试使用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")
}

工人阶级

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()
}
}

当我的应用未关闭时,这些代码可以很好地工作。

即使关闭了应用程序,我如何运行它?

2 个答案:

答案 0 :(得分:0)

定期工作 工作经理仅以至少 15 分钟的间隔工作。 如果您需要连续工作,请使用前台服务来定义您的工作。记得把它放在单独的线程和前台服务通知中以使其保持活动状态,否则系统会在一分钟内杀死它。

答案 1 :(得分:-1)

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

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