问题标签 [firebase-job-dispatcher]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
14845 浏览

android - Firebase JobDispatcher - 与以前的 API(JobScheduler 和 GcmTaskService)相比,它是如何工作的?

背景

Google 有多种作业/任务调度解决方案,例如JobSchedulerGcmTaskService. 每个都有自己的优点和缺点。

最近,谷歌推出了一个名为“Firebase JobDispatcher”的新库。

问题

遗憾的是,关于这个新 API 的内容很少。事实上,很难找到任何关于它的东西。

我唯一找到的是他们的公告视频一个样本。但即使是他们,也没有太多关于这个 API 的知识。

问题

查看我之前与其他 API 的问题、调查和比较(例如,此处),我想问一下新 API 的工作原理以及使用它时要考虑的事项:

  1. 作业是否可以有参数保留,甚至可以在需要时进行修改?他们在示例中说“用户提供的附加功能的可选捆绑包。默认为空捆绑包。 ”是这样吗?它可以在执行时被作业修改吗?

  2. 可以轻松地重新安排工作吗?据说“一个布尔值,指示作业是否应该重复”。如何选择何时重新安排?我已经尝试了该示例,并选择了“重复”,但它似乎没有再次运行,只有一次。

  3. 与图书馆的工作相比,它可以受到保护吗(因为唯一的 ID)?

  4. 更新应用程序时是否需要格外小心(就像以前的 API 一样)?应用程序更新后仍可以安排工作吗?对样本进行测试,似乎在更新应用程序后工作完全消失了。可以避免吗?

  5. RECEIVE_BOOT_COMPLETED如果我希望即使在设备重新启动时仍能安排作业,是否需要它?样品似乎有它。

  6. 是否可以获得所有计划作业及其信息(包括参数)的列表,并能够取消特定/全部甚至修改它们?

  7. 应用清数据操作后作业会被删除吗?

  8. 是否可以告诉作业最好在某个时间范围内运行(例如:早上 7:00 到 8:00 之间)?提到了“ ExecutionWindowTrigger-它指定了应执行Job的时间窗口”。是这样吗?当它错过这个窗口时会发生什么?

  9. onStartJob类中的方法JobService返回一个布尔值,它的描述是“是否还有更多的工作剩余”。这是什么意思?needsReschedule方法的参数是什么jobFinished意思?它们相互关联吗?

  10. 有什么我应该知道的限制吗?例如每个函数的最小值和最大值?

0 投票
2 回答
974 浏览

android - android JobScheduler 可以替代 RxJava 吗?

这是使用rxjava(and retrofit) 的典型网络调用。可以JobScheduler用这个代替吗?如果是,如何?最重要的是,是否推荐?

0 投票
2 回答
3310 浏览

android - 如何使用 FirebaseJobDispatcher

我正在尝试按照这个来使用 FirebaseJobDispatcher

但我的问题是,如何为调度程序对象设置时间间隔,如 GCMNetworkManager (setPeriod)。或者请解释 FirebaseJobDispatcher 的工作原理。

0 投票
1 回答
798 浏览

android - Firebase JobDispatcher 是否使用 JobScheduler?

由于我的应用程序必须可用于 Android 4.x 版本,因此我不能仅依赖 JobScheduler 进行后台活动。Firebase JobDispatcher 向后兼容我需要的版本,所以我对其进行了一些测试。

我的期望是,它在 Android <5 时使用 Google Play 服务,在 5+ 时使用 JobScheduler API,正如在 Google I/O 2016 上的Android 电池和内存优化谈话的这张幻灯片中所见。

我使用 JobDispatcher 在自己的应用程序中安排的作业和 Firebase JobDispatcher 附带的 testapp 可以正常工作。打电话时我看不到任何活动adb shell dumpsys jobscheduler。当我直接使用 JobScheduler 时,我可以毫无问题地看到那里的作业。

所以我猜我上面链接的幻灯片是错误的?在 Android 5+ 上是否可以让 JobDispatcher 使用 JobScheduler?也许使用自定义驱动程序?

0 投票
1 回答
643 浏览

android - Firebase JobDispatcher:是否有不需要 Google Play 服务的驱动程序?

Firebase JobDispatcher使用需要 Google Play 服务才能工作的Driver接口:

Driver是一个接口,表示可以调度、取消和执行作业的组件。唯一捆绑的驱动程序是GooglePlayDriver,它依赖于 Google Play 服务内置的调度程序。

Driver不需要 Google Play 服务的 Firebase JobDispatcher 的方便示例吗?

0 投票
1 回答
415 浏览

android - Firebase JobDispatcher 是否使用 API 级别 21 以上的 JobScheduler?

我已经阅读了Firebase JobDispatcher使用JobScheduler可用的地方(即从 API 级别 21 及更高级别)的建议,否则使用它自己的方法(基于 Google Play 服务)。

例如,此处的 Google 信息说明如下:

Firebase JobDispatcher 用作针对低于 5.0(API 级别 21)的 Android 版本的应用的 JobScheduler 兼容性层。

但是我发现,对于一个特定的用户,我的应用程序中的一项工作在Android 6.0 设备上通过Firebase JobDispatcher但不是通过启动时可以正常工作。JobScheduler

所以我想我会挖掘Firebase JobDispatcher代码,看看我能找到什么。但是我在库中找不到任何对JobScheduler. 在存储库中搜索该术语不会返回任何结果。

我有点新手,所以不要激怒我,但是这里有人可以告诉我是否Firebase JobDispatcher确实使用JobScheduler,如果是的话,请指出库代码中的位在哪里JobScheduler使用?

0 投票
1 回答
3801 浏览

android - 我可以使用 Firebase JobDispatcher 来触发特定时间的任务吗

我正在开发一个应用程序,其中某些任务在特定时间在后台完成。

Android 开发者文档建议了各种方法。我知道 AlarmManager 可以用于此目的。但是,我认为,在打盹模式下使用 Android 6.0 中的 AlarmManager 会产生不正确的触发器。

我从开发人员文档中遇到了 JobScheduling 库

由于我的应用程序支持低于 Android 5.0 的版本。我想到了使用 FireBaseJobDispatcher。

我可以使用 FirebaseJobDispatcher 在特定时间触发特定任务吗?

例如:我想从上午 9 点到下午 6 点每小时更新一次数据库

0 投票
1 回答
2381 浏览

firebase-job-dispatcher - 如何取消firebase作业调度程序中的重复作业

我创建了一个周期性工作,我想在满足某些条件时取消周期性工作。

如何取消 firebase 中的工作?

0 投票
3 回答
6462 浏览

android - 使用 firebase 作业调度程序安排重复作业

我正在尝试每 10 分钟将 android 设备的位置发布到服务器。我正在使用 Firebase 作业调度程序来执行此操作

UpdateLocationService获取位置并发送到服务器。

我的问题:事情大部分都很好。唯一的问题是,工作安排的时间差为 4m、6m、7m、8m、10m、16m、23m ......

有人可以帮助我理解正在发生的事情。

更新:我想在 10-20 分钟内找到一次。在上面的代码中,值太低只是为了测试目的

0 投票
0 回答
621 浏览

java - 如何使用每天执行的 FCM 作业调度程序安排服务器调用?

我已经读过,为了优化设备电池,我必须使用 FCM 作业调度程序。我的要求是每天(一次)通过一个简单的 POST 请求将数据发送到服务器。现在我应该使用 FCM 调度程序还是警报管理器。如果我使用了 FCM 调度程序,我该如何使用它,因为它只设置了 trigger()。

这是文档。他们没有日常定期任务的文档。

这是他们给出的代码:

我如何使用此代码来安排定期执行的任务?