Firebase JobDispatcher是否使用JobScheduler?

时间:2016-08-09 14:42:13

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

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

我的期望是,它在Android< 5时使用Google Play服务,在5+时使用JobScheduler API,如{em> Android电池和内存优化中的this slide所示在Google I / O 2016上。

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

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

1 个答案:

答案 0 :(得分:0)

我在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

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

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

android-job库通常也是一样的。