Использует ли Firebase JobDispatcher JobScheduler?

Поскольку мое приложение должно быть доступно для версий Android 4.x, я не могу полагаться исключительно на JobScheduler для фоновой активности. Firebase JobDispatcher обратно совместим с нужными мне версиями, поэтому я немного протестировал его.

Я ожидал, что он будет использовать сервисы Google Play на Android ‹5 и API JobScheduler на 5+, как показано на этот слайд из выступления Аккумулятор Android и оптимизация памяти на Google I/O 2016.

Задания, которые я планирую в своем собственном приложении с помощью JobDispatcher и testapp, который поставляется с Firebase JobDispatcher, работают. Я не вижу никакой активности при вызове adb shell dumpsys jobscheduler. Когда я использую JobScheduler напрямую, я без проблем вижу там задания.

Итак, я предполагаю, что слайд, который я связал выше, неверен? Можно ли разрешить JobDispatcher использовать JobScheduler на Android 5+? Может с кастомным драйвером?


person Henning    schedule 09.08.2016    source источник
comment
Что ж, есть надежда, что Google предоставит драйвер JobScheduler: github.com /firebase/firebase-jobdispatcher-android/issues/   -  person Henning    schedule 28.09.2016


Ответы (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

планировщик заданий и диспетчер заданий — это две совершенно разные вещи; диспетчер уже является драйвером для обратной совместимости (поэтому нельзя ожидать, что ОС будет иметь планировщик).

См. JobSchedulerShellCommand.java или этот ответ может объяснить это подробнее.

Библиотека android-job в целом делает то же самое.

person Martin Zeitler    schedule 16.03.2017
comment
Спасибо за ваш ответ. Под «я не вижу никакой активности в оболочке» я имел в виду свое приложение. Без надлежащего драйвера JobScheduler JobDispatcher сейчас довольно бесполезен. Я сам создаю для него элементарный планировщик-драйвер, но тем не менее я разочарован. В проекте GitHub почти нет активности, а обещанная функциональность по-прежнему отсутствует. год спустя. Оглядываясь назад, я должен был использовать библиотеку Evernote Android-Job. - person Henning; 17.03.2017