是使用JobScheduler的Firebase JobDispatcher



因为我的应用程序必须可用于Android版本4。我不能仅仅依靠JobScheduler来处理后台活动。Firebase JobDispatcher与我需要的版本向后兼容,所以我对它进行了一些测试。

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

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

所以我猜我上面链接的幻灯片是错误的?是否可以让JobDispatcher在Android 5+上使用JobScheduler ?也许有一个定制的司机?

我在Android 7.1.1上得到控制台输出…Not too less:

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或此答案可能会进一步解释。

android-job库通常也做同样的事情。

相关内容

  • 没有找到相关文章

最新更新