我正在尝试使用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()
}
}
当我的应用未关闭时,这些代码可以很好地工作。
即使关闭了应用程序,我如何运行它?
答案 0 :(得分:0)
定期工作 工作经理仅以至少 15 分钟的间隔工作。 如果您需要连续工作,请使用前台服务来定义您的工作。记得把它放在单独的线程和前台服务通知中以使其保持活动状态,否则系统会在一分钟内杀死它。
答案 1 :(得分:-1)
我建议您将PeriodicWorkRequest用于需要定期执行的任务。在此处查看详细信息。
https://developer.android.com/topic/libraries/architecture/workmanager/how-to/recurring-work