【问题标题】:Is the Firebase JobDispatcher using the JobScheduler?Firebase JobDispatcher 是否使用 JobScheduler?
【发布时间】:2016-12-15 16:26:46
【问题描述】:

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

我的期望是,它在 Android this slide 上看到的 Android 电池和内存优化 Google I /O 2016.

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

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

【问题讨论】:

标签: android android-jobscheduler firebase-job-dispatcher


【解决方案1】:

我在 Android 7.1.1 上获得了控制台输出...不少于:

adb shell dumpsys jobscheduler | grep x\ active

在过去的 SDK 版本中,dumpsys jobscheduler 可能无法转储不存在的内容(启动此类 SDK 版本,然后发出命令会显示,因为它何时有效)。

从 Android 7.0.0 开始,jobscheduler 有了一个新命令:

adb shell cmd jobscheduler help

Job scheduler (jobscheduler) commands:
  help
    Print this help text.
  run [-f | --force] [-u | --user USER_ID] PACKAGE JOB_ID
    Trigger immediate execution of a specific scheduled job.
    Options:
      -f or --force: run the job even if technical constraints such as connectivity are not currently met
      -u or --user: specify which users job is to be run; the default is the primary or system user

scheduler 工作和 dispatcher 工作是两个完全不同的东西;调度程序已经向后兼容的驱动程序(因此不能指望操作系统拥有调度程序)。

请参阅JobSchedulerShellCommand.java 或此answer 可能会进一步解释。

android-job 库通常也是如此。

【讨论】:

  • 感谢您的回答。使用“我在 shell 中看不到任何活动”是指我的应用程序。如果没有合适的 JobScheduler 驱动程序,JobDispatcher 现在就毫无用处。我自己为它构建了一个基本的调度程序驱动程序,但我仍然感到失望。 GitHub 项目上几乎没有任何活动,承诺的功能是 still missing a year later。事后看来,我应该使用 Evernote Android-Job 库。
猜你喜欢
  • 2016-11-15
  • 1970-01-01
  • 1970-01-01
  • 2017-01-18
  • 1970-01-01
  • 2015-11-13
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
相关资源
最近更新 更多