Kotlin Workmanager 奇怪的执行时间
Kotlin Workmanager strange execution times
我创建了我的第一个“PeriodicWorkManager”。我希望它每小时 运行。 (最好是在小时的第 0 分钟)。所以我创建了一个这样的 Workmanager:
WorkManager.getInstance(this).cancelAllWorkByTag("DrinkNotify")
val work2 = PeriodicWorkRequest.Builder(NotifyWorker::class.java, 1, TimeUnit.HOURS)
.setConstraints(Constraints.NONE)
.addTag("DrinkNotify")
.build()
WorkManager.getInstance(this).enqueue(work2)
NotifyWorker class 看起来像这样:
class NotifyWorker(appContext: Context, workerParams: WorkerParameters):Worker(appContext, workerParams) {
var appContext = appContext
override fun doWork(): Result {
if(this.tags.contains("DrinkNotify")){
Log.d("CUSTOM","WURDE AUSGEFÜHRT")
}
return Result.retry()
}
}
我启动了 WorkManager 并看到了初始函数 运行ning(这对我来说没问题),但在初始化它后 运行s 之后每小时 运行ning 不是这样的:
2021-02-03 20:38:31.995 22945-22973/com.workmanagerdemo D/CUSTOM: WURDE AUSGEFÜHRT
2021-02-03 20:39:32.108 22945-22990/com.workmanagerdemo D/CUSTOM: WURDE AUSGEFÜHRT
2021-02-03 20:41:32.213 22945-23006/com.workmanagerdemo D/CUSTOM: WURDE AUSGEFÜHRT
2021-02-03 20:45:32.304 22945-22973/com.workmanagerdemo D/CUSTOM: WURDE AUSGEFÜHRT
2021-02-03 20:54:34.114 22945-22990/com.workmanagerdemo D/CUSTOM: WURDE AUSGEFÜHRT
所以起初它在初始后 1 分钟执行,然后是 2 分钟、4 分钟和 9 分钟。
我不明白为什么 运行 会这样。你有什么想法吗?
提前致谢!
WorkManager
不保证在特定时间执行您的工作。对于上述场景,您可以使用 AlarmManager
和 WorkManager
。
WorkManager
将在满足约束条件后开始您的工作,AlarmManager
将每隔一小时执行一次。
这是一个项目,其中包含它的代码,但它不能满足您的所有要求。你可以玩它,你会知道它是如何执行的。
我创建了我的第一个“PeriodicWorkManager”。我希望它每小时 运行。 (最好是在小时的第 0 分钟)。所以我创建了一个这样的 Workmanager:
WorkManager.getInstance(this).cancelAllWorkByTag("DrinkNotify")
val work2 = PeriodicWorkRequest.Builder(NotifyWorker::class.java, 1, TimeUnit.HOURS)
.setConstraints(Constraints.NONE)
.addTag("DrinkNotify")
.build()
WorkManager.getInstance(this).enqueue(work2)
NotifyWorker class 看起来像这样:
class NotifyWorker(appContext: Context, workerParams: WorkerParameters):Worker(appContext, workerParams) {
var appContext = appContext
override fun doWork(): Result {
if(this.tags.contains("DrinkNotify")){
Log.d("CUSTOM","WURDE AUSGEFÜHRT")
}
return Result.retry()
}
}
我启动了 WorkManager 并看到了初始函数 运行ning(这对我来说没问题),但在初始化它后 运行s 之后每小时 运行ning 不是这样的:
2021-02-03 20:38:31.995 22945-22973/com.workmanagerdemo D/CUSTOM: WURDE AUSGEFÜHRT
2021-02-03 20:39:32.108 22945-22990/com.workmanagerdemo D/CUSTOM: WURDE AUSGEFÜHRT
2021-02-03 20:41:32.213 22945-23006/com.workmanagerdemo D/CUSTOM: WURDE AUSGEFÜHRT
2021-02-03 20:45:32.304 22945-22973/com.workmanagerdemo D/CUSTOM: WURDE AUSGEFÜHRT
2021-02-03 20:54:34.114 22945-22990/com.workmanagerdemo D/CUSTOM: WURDE AUSGEFÜHRT
所以起初它在初始后 1 分钟执行,然后是 2 分钟、4 分钟和 9 分钟。
我不明白为什么 运行 会这样。你有什么想法吗?
提前致谢!
WorkManager
不保证在特定时间执行您的工作。对于上述场景,您可以使用 AlarmManager
和 WorkManager
。
WorkManager
将在满足约束条件后开始您的工作,AlarmManager
将每隔一小时执行一次。
这是一个项目,其中包含它的代码,但它不能满足您的所有要求。你可以玩它,你会知道它是如何执行的。