由于我的应用程序必须适用于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?也许使用自定义驱动程序?
答案 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库通常也是一样的。