我正在使用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);发布于 2017-07-24 10:02:33
如果你想让你的MyJobService每分钟运行,你需要改变这个.
.setTrigger(Trigger.executionWindow(0, 10))..。为了这个..。
.setTrigger(Trigger.executionWindow(60, 60))你之前听到的是告诉FirebaseJobDispatcher每0-10秒触发一次你的工作。通过插入60,60窗口,您可以告诉它大约每60秒触发一次您的工作。您也可以将其更改为55,65或其他一些变体,但我发现60,60对我有好处。
发布于 2018-07-05 19:35:44
我只是有同样的问题:我的工作被安排了60到120秒,但在第一次和第二轮之间,我的工作大约6分钟。
在作业触发的最后一个函数的最后一行之后,我刚刚错过了调用jobFinished(JobParameters params, boolean needsReschedule)的机会。加上这个解决了我案子中的问题。
希望这能有所帮助。
https://stackoverflow.com/questions/42601302
复制相似问题