Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase作业调度程序作业之间的间隔会随着时间的推移而增加_Android_Firebase Job Dispatcher - Fatal编程技术网

Android Firebase作业调度程序作业之间的间隔会随着时间的推移而增加

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

我正在使用Firebase作业调度器计划每1分钟定期执行一次作业。以下是我的配置:

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)