gpt4 book ai didi

android - 定期工作请求停止重复的原因是什么?

转载 作者:行者123 更新时间:2023-12-04 23:59:39 25 4
gpt4 key购买 nike

我有一个周期性的工作请求,在一天或更长时间后突然停止重复。

inline fun <reified W : Worker> Context.schedule(repeatInterval: Long = 1,
interval: TimeUnit = TimeUnit.HOURS,
flexTimeInterval: Long? = null,
flexInterval: TimeUnit? = null,
constraints: Constraints = networkConstraint) {

val workManager = WorkManager.getInstance(this)
val workRequestBuilder = if (flexInterval != null && flexTimeInterval != null) {
PeriodicWorkRequestBuilder<W>(repeatInterval, interval, flexTimeInterval, flexInterval)
} else {
PeriodicWorkRequestBuilder<W>(repeatInterval, interval)
}

val work = workRequestBuilder
.setConstraints(constraints)
.addTag(W::class.java.name)
.build()
background {
workManager.cancelAllWorkByTag(W::class.java.name).await()
workManager.enqueue(work)
}
}

在我的应用程序的最新版本之前一直很好。我注意到它只是在一段时间后停止重复出现。以前它连续几个月没有问题。

我的问题是除了周期性的工作请求被取消之外还有什么原因突然停止了?如果一个作业挂起并阻塞它的线程并且永远不会返回工作结果,这会导致问题吗?根据文档,如果作业在 10 分钟内没有返回,它就会停止。这就是为什么我如此困惑...我唯一取消它的地方是在我安排它之前。

每 35 分钟安排一次:

fun schedule(context: Context) = context.schedule<DeviceCheckInWorker>(
flexTimeInterval = 15,
interval = TimeUnit.MINUTES,
repeatInterval = 35,
flexInterval = TimeUnit.MINUTES)

最佳答案

觉得问这个问题很傻。答案如文档所述,定期工作请求将继续重复,直到被取消。

没有理由不重复。

我们的新版本引入了一个事件来响应外部源 Intent ,该事件实质上会从另一个 Activity 中重新启动我们的应用程序。在另一个 Activity 中,启动代码首先使用 WorkManager.getInstance(context).cancelAllWork() 清除所有工作人员,然后再次启动计划的工作人员。唯一的问题是我认为正在停止的这个特定的定期工作人员没有在此功能中再次安排。

所以当然...就像我有预感一样,我自己专门取消它是我的错。不得不问......是那些时刻之一。必须通过 logcat 查看我的应用程序一天一点。欢乐时光。

抱歉,StackOverflow 提出了无用的问题。

关于android - 定期工作请求停止重复的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62565800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com