gpt4 book ai didi

android - 更改 Firebase JobDispatcher 中周期性任务的周期?

转载 作者:太空狗 更新时间:2023-10-29 14:44:18 24 4
gpt4 key购买 nike

我之前使用的是 GCM 网络管理器,但后来听说 Firebase JobDispatcher 包括 GCM 以及其他功能,所以我尝试使用它。我已经成功地编写了一个周期性任务并且它工作正常,但问题是我需要改变周期而不是从一开始就固定。

这样做的原因是,我正在使用 Activity 识别服务,我希望 JobDispatcher 下次执行周期性任务时基于检测到的当前 Activity 。比如你在走路,下一次触发任务是在30分钟后,而如果你在车里,那么这个时间段是5分钟(主要是因为如果你在车里,你的手机更有可能将在短时间内提供与步行时不同的位置值)。

这是我对周期性任务进行编程的方式,如您所见,我设置了一个固定值,我想知道由此任务触发的服务是否可以提供反馈,从而改变周期性任务任务。

 final Builder builder = jobDispatcher.newJobBuilder()
.setTag(form.tag.get())
.setRecurring(form.recurring.get())
.setLifetime(form.persistent.get() ? Lifetime.FOREVER : Lifetime.UNTIL_NEXT_BOOT)
.setService(DemoJobService.class)
.setTrigger(Trigger.executionWindow(
form.getWinStartSeconds(), form.getWinEndSeconds()))
.setReplaceCurrent(form.replaceCurrent.get())
.setRetryStrategy(jobDispatcher.newRetryStrategy(
form.retryStrategy.get(),
form.getInitialBackoffSeconds(),
form.getMaximumBackoffSeconds()));

if (form.constrainDeviceCharging.get()) {
builder.addConstraint(Constraint.DEVICE_CHARGING);
}
if (form.constrainOnAnyNetwork.get()) {
builder.addConstraint(Constraint.ON_ANY_NETWORK);
}
if (form.constrainOnUnmeteredNetwork.get()) {
builder.addConstraint(Constraint.ON_UNMETERED_NETWORK);
}

最佳答案

为此,您需要使用保存在 SharedPrefs/其他地方的标签( form.tag.get() 在你的例子中):

FirebaseJobDispatcher(GooglePlayDriver(context)).cancel(yourTag)

然后它可以使用更新后的参数重新安排作业。很遗憾,目前无法编辑作业,必须取消并重新创建!

关于android - 更改 Firebase JobDispatcher 中周期性任务的周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42495966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com