有没有办法使周期性任务的延迟较短



我正在使用Firebase Job Dispatcher,并且正在编程一个简单的周期性作业,该作业应在有Internet连接时每分钟左右运行。我知道工作不会准确地运行,因为他们想改善电池寿命并允许其他应用程序工作,但是延迟太长了。它可以达到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);

如果您希望MyJobService每分钟运行您需要更改此问题...

.setTrigger(Trigger.executionWindow(0, 10))

...对此...

.setTrigger(Trigger.executionWindow(60, 60))

您之前的内容是告诉FirebaseJobDispatcher每0-10秒触发您的工作。通过将60,60的窗口放入大约每60秒钟的窗口。您也可以将其更改为55,65或其他一些变体,但我发现60,60对我有用。

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

我只是错过了在作业触发的最后一个函数的最后一行之后立即致电jobFinished(JobParameters params, boolean needsReschedule)。在我的情况下,添加此问题解决了问题。

希望会有所帮助。

相关内容

  • 没有找到相关文章

最新更新