首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有办法使周期性任务具有较短的延迟时间?

是否有办法使周期性任务具有较短的延迟时间?
EN

Stack Overflow用户
提问于 2017-03-04 20:55:35
回答 2查看 268关注 0票数 0

我正在使用firebase作业调度程序,我正在编写一个简单的周期性作业,当有互联网连接时,应该每分钟运行一次。我知道乔布斯没有准时运行,因为他们想要提高电池寿命,并允许其他应用程序也能工作,但延迟太久了。它可以达到25分钟,这是太长,比要求的1分钟。是否有办法使定期作业至少每3-5分钟运行一次?

Thix是我如何编写周期性任务的方法:

代码语言:javascript
复制
  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);
EN

回答 2

Stack Overflow用户

发布于 2017-07-24 10:02:33

如果你想让你的MyJobService每分钟运行,你需要改变这个.

代码语言:javascript
复制
.setTrigger(Trigger.executionWindow(0, 10))

..。为了这个..。

代码语言:javascript
复制
.setTrigger(Trigger.executionWindow(60, 60))

你之前听到的是告诉FirebaseJobDispatcher每0-10秒触发一次你的工作。通过插入60,60窗口,您可以告诉它大约每60秒触发一次您的工作。您也可以将其更改为55,65或其他一些变体,但我发现60,60对我有好处。

票数 0
EN

Stack Overflow用户

发布于 2018-07-05 19:35:44

我只是有同样的问题:我的工作被安排了60到120秒,但在第一次和第二轮之间,我的工作大约6分钟。

在作业触发的最后一个函数的最后一行之后,我刚刚错过了调用jobFinished(JobParameters params, boolean needsReschedule)的机会。加上这个解决了我案子中的问题。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42601302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档