Android Firebase作业调度程序作业之间的间隔会随着时间的推移而增加
我正在使用Firebase作业调度器计划每1分钟定期执行一次作业。以下是我的配置:Android Firebase作业调度程序作业之间的间隔会随着时间的推移而增加,android,firebase-job-dispatcher,Android,Firebase Job Dispatcher,我正在使用Firebase作业调度器计划每1分钟定期执行一次作业。以下是我的配置: Job job = dispatcher.newJobBuilder() .setLifetime(Lifetime.FOREVER) .setService(JobService.class) .setTag("JobDispatcher") .setReplaceCurrent(fa
Job job = dispatcher.newJobBuilder()
.setLifetime(Lifetime.FOREVER)
.setService(JobService.class)
.setTag("JobDispatcher")
.setReplaceCurrent(false)
.setRecurring(true)
.setTrigger(Trigger.executionWindow(30, 60))
.setRetryStrategy(RetryStrategy.DEFAULT_LINEAR)
.build();
.setRetryStrategy(RetryStrategy.DEFAULT_LINEAR)
我在作业服务的onStartJob上保留了一个记录器,以检查作业何时执行。虽然我将30-60秒的窗口作为作业间隔时间,但每隔20-25分钟就会执行一次作业。记录器如下所示:
Job start 2018-02-14 9:28:16
Job start 2018-02-14 9:30:25
Job start 2018-02-14 9:31:11
Job start 2018-02-14 9:32:46
Job start 2018-02-14 9:34:22
Job start 2018-02-14 9:37:16
Job start 2018-02-14 9:42:27
Job start 2018-02-14 9:48:36
Job start 2018-02-14 9:57:33
Job start 2018-02-14 10:09:11
Job start 2018-02-14 10:24:29
Job start 2018-02-14 10:41:16
Job start 2018-02-14 11:01:52
Job start 2018-02-14 11:25:16
Job start 2018-02-14 11:52:27
Job start 2018-02-14 12:15:06
.setRetryStrategy(RetryStrategy.DEFAULT_LINEAR)
在最初几分钟内,服务每1-2分钟运行一次,这很好。一段时间后,间隔以线性方式增加
.setRetryStrategy(RetryStrategy.DEFAULT_LINEAR)
注意:我正在安卓5.1.1和Huwaei设备上进行测试,该应用被登记为受保护的应用
.setRetryStrategy(RetryStrategy.DEFAULT_LINEAR)
如果你看一下这个文件
很明显,重试状态在
.setRetryStrategy(RetryStrategy.DEFAULT_LINEAR)
/**预计时间为:[30秒,60秒,90秒,120秒,…,3600秒]*/
.setRetryStrategy(RetryStrategy.DEFAULT_LINEAR)
您可以通过以下链接尝试创建自己的自定义重试策略
.setRetryStrategy(RetryStrategy.DEFAULT_LINEAR)
文档说明重试策略适用于作业执行失败,这是否意味着每次初始失败后都会触发我的作业?是的,看起来是这样。由于触发频率非常低(1-2)分钟,因此可能会发生这种情况。我已实施了自定义的retrystrategy,但最大后退必须设置为至少5分钟。因此,它导致服务现在以6-7分钟的间隔运行。是否有将此间隔缩短为1分钟的变通方法?作业调度器和Firebase作业调度器都适用于持续时间较长的任务。(例如,超过10分钟)。对于1分钟的任务,最好使用AlarmManager。
.setRetryStrategy(RetryStrategy.DEFAULT_LINEAR)