- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我之前使用的是 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/
我在为firebase jobdispatcher添加依赖项时遇到问题,我已经用gradle文件来回尝试,我在Android SDK中安装了Google Play服务,但仍然无法编译该依赖关系。 这是
我正在开发一个应用程序,一个简单但希望令人上瘾的小游戏。用户必须尽快解决预定义的级别。 关卡信息在线存储在 MySQL 数据库中,其中还包含所有玩家完成给定关卡所需的平均时间。此外,关卡数据本地存储在
我在这一行遇到以下错误:.setService(LocationFirebaseJobService::class.java) : 类型推断失败。预期类型不匹配:推断类型为 Class但是Class预
我正在实现 Firebase Jobdispatcher,触发时间指定在 10 到 20 秒之间。这是我安排工作的代码: public static void scheduleCompatibleJo
根据这个例子,我看到我可以使用 Trigger.NOW 或 0,0 的时间让作业现在开始: Bundle myExtrasBundle = new Bundle(); myExtrasBundle.p
下面是我用来安排每次连接到互联网时触发作业的代码 FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlay
Possible Duplicate 我已经创建了一个 JobDispatcher 服务来持续在后台获取用户位置并将用户位置发布到服务器。为此,我创建了一个作业如下: private void sta
我在我的项目中使用了 FirebaseJobDispatcher。这是示例代码。 public class MyCustomDispatcher extends JobService { @O
我正在使用 Firebase-JobDispatcher .我已经安排了一些工作,如果我保持设备开关,它工作正常。但是如果我重新启动我的设备,那么计划的工作不会执行或者它不会被重新安排?我已经使用了
我已经阅读了所有可用的官方文档(令人惊讶的是它并不多),对于定期任务我所能得到的就是这段代码 .setRecurring(true) // start
我之前使用的是 GCM 网络管理器,但后来听说 Firebase JobDispatcher 包括 GCM 以及其他功能,所以我尝试使用它。我已经成功地编写了一个周期性任务并且它工作正常,但问题是我需
在 API > 21 上,当我的手机锁定时,此服务将停止工作(当我唤醒手机时,服务将开始工作)。这就是我所做的: public class JobDispacherService extends Jo
我正在尝试将 Firebase Job Dispatcher 添加到我的项目中,但由于此错误我无法构建: Gradle sync failed: Could not find com.firebase
我正在尝试使用 RxJava2 异步启动 Firebase jobdispatcher。 @Override public boolean onStartJob(JobParameters j
我在我的应用程序中使用 firebase jobdispatcher,但我遇到了一个问题。我想在任务完成后停止工作。我尝试在 onStartJob() 方法中调用 selfStop()。但它的 onS
我正在创建一个闹钟之类的应用程序,用户可以在其中为特定日期和时间添加余数,他们还可以选择重复来重复余数。 其余时间我不做任何特定于网络的工作。但是将来我可能需要使用特定于网络的工作,但目前还不需要。
我想实现 Firebase JobDispatcher 来运行后台操作。但是在扩展 JobService 时,它显示错误,因为 class requires api level 21。为什么 ?
目前,在 Android 中,要根据时间或任何其他因素(如充电状态、网络状态等)定期执行任务,基本的三个选项是:Android AlarmManager (定期运行基于时间)、GCMTaskServi
来自 Firebase JobDispatcher 文档 Firebase JobDispatcher setTrigger(Trigger.executionWindow(0, 60)) // st
我已经使用 Firebase 作业调度程序实现了作业调度。它在 doc 中给出具有特定操作 Action 的 IntentFilter 应该添加到作业服务中,如下所示 添加上面的 Int
我是一名优秀的程序员,十分优秀!