我想在特定时间触发 Firebase Job Dispatcher,例如 1498383000000L
。但是触发方法有一个窗口,我们可以在其中指定时间。我该如何克服这个问题?
Job newJob = dispatcher.newJobBuilder()
//update if any task with the given tag exists.
.setReplaceCurrent(true)
//Integrate the job you want to start.
.setService(ScheduledJobService.class)
.setTag("UniqueTagForYourJob")
// Run between 30 - 60 seconds from now.
.setTrigger(Trigger.executionWindow(30, 60))
.build();
return newJob;
最佳答案
您可以以秒为单位计算 future 特定时间与现在之间的差异,并将其设置为 Trigger.executionWindow()
方法中的 windowStart
参数。您可以设置与 windowEnd
参数相同的值,以使作业尽可能接近那个时间开始,但即使在这种情况下也不能保证作业在特定时间开始。
根据我的经验,当 windowStart
和 windowEnd
值是相同的值。
在下面的示例中,开始时间是根据所需的作业开始时间计算的,并为作业设置了 60 秒的窗口。
long timeInFuture = 1498383000000L;
int jobTime = Math.round((System.currentTimeMillis() - timeInFuture) / 1000);
Job newJob = null;
if (jobTime >= 0){
newJob = dispatcher.newJobBuilder()
.setReplaceCurrent(true)
.setService(ScheduledJobService.class)
.setTag("UniqueTagForYourJob")
.setTrigger(Trigger.executionWindow(jobTime, jobTime + 60))
.build();
}
return newJob;
关于android - 在特定时间触发 Firebase Job Dispatcher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44744991/