我正在使用firebase作业调度程序,我正在编写一个简单的定期作业,应该在有互联网连接时每分钟运行一次。 我知道工作没有按时完成,因为他们希望改善电池寿命,并允许其他应用程序也能正常工作,但延迟时间太长。它可以达到25分钟,这比想要的1分钟要长。 有没有办法让定期工作至少每3-5分钟运行一次?
Thix是我编写周期性任务的方式:
FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(MainActivity.this));
Job myJob = dispatcher.newJobBuilder()
// the JobService that will be called
.setService(MyJobService.class)
// uniquely identifies the job
.setTag("my-unique-tag")
.setRecurring(true)
.setLifetime(Lifetime.FOREVER)
// start between 0 and 10 seconds from now
.setTrigger(Trigger.executionWindow(0, 10))
.setReplaceCurrent(true)
.setRetryStrategy(RetryStrategy.DEFAULT_LINEAR)
// constraints that need to be satisfied for the job to run
.setConstraints(
// only run on an unmetered network
Constraint.ON_UNMETERED_NETWORK
)
.build();
dispatcher.mustSchedule(myJob);
答案 0 :(得分:0)
如果您希望每分钟运行MyJobService
,则需要更改此内容...
.setTrigger(Trigger.executionWindow(0, 10))
......对此...
.setTrigger(Trigger.executionWindow(60, 60))
之前你告诉FirebaseJobDispatcher
每0-10秒触发一次你的工作。通过放入60,60
的窗口,你告诉它大约每60秒触发一次你的工作。您也可以将其更改为55,65
或其他一些变体,但我发现60,60
对我有用。
答案 1 :(得分:0)
我遇到了同样的问题:“我的工作”排定为60到120秒,但在第一次和第二次工作之间大约需要6分钟。
我只是错过了作业触发的最后一个函数的最后一行之后立即调用mysql2
。添加这个解决了我的问题。
希望有帮助。