Задний план
У Google есть несколько решений для планирования заданий/задач, например JobScheduler
и GcmTaskService
. Каждый из них имеет свои преимущества и недостатки.
Недавно Google представила новую библиотеку под названием «Firebase JobDispatcher».
Проблема
К сожалению, мало что можно прочитать об этом новом API. На самом деле очень трудно найти что-либо по этому поводу.
Единственное, что я нашел, это их видео-объявление и пример. Но даже в них мало что нужно знать об этом API.
Вопросы
Глядя на предыдущие вопросы, исследования и сравнения, которые у меня были с другими API (например, здесь), я хотел бы спросите, как работает новый API, и узнайте, что следует учитывать при его использовании:
Может ли задание иметь параметры, которые остаются с ним и даже могут быть изменены при необходимости? В образце говорится: «Необязательный пакет дополнений, предоставляемых пользователем. По умолчанию используется пустой пакет». Это он? Может ли он быть изменен заданием после его выполнения?
Можно ли легко перепланировать рабочие места? Сказано: «логическое значение, указывающее, должно ли задание повторяться». Как выбрать время для перепланировки? Я попробовал образец и выбрал «Повторяющийся», но, похоже, он не запускается снова, только один раз.
Может ли он быть защищен от заданий библиотеки (из-за уникальных идентификаторов)?
Требуется ли дополнительная осторожность при обновлении приложения (как это делали предыдущие API)? Можно ли по-прежнему планировать задания после обновления приложения? Тестирование на образце показало, что после обновления приложения задания полностью исчезли. Можно ли этого избежать?
Нужен ли
RECEIVE_BOOT_COMPLETED
в случае, если я хочу, чтобы задание по-прежнему планировалось даже при перезапуске устройства? В образце вроде есть.Можно ли получить список всех запланированных заданий и их информацию (включая параметры), а также отменить определенные/все из них и даже изменить их?
Будет ли удалена работа при операции очистки данных приложения?
Можно ли сообщить заданию, что лучше всего выполнять его в определенное время (например, между 7:00 и 8:00 утра)? Упоминается «ExecutionWindowTrigger — указывает временное окно, в котором должно выполняться задание». Это оно? Что происходит, когда он пропускает это окно?
Метод
onStartJob
в классеJobService
возвращает логическое значение, и его описание звучит так: "есть ли еще работа". Что это значит? Что означает параметрneedsReschedule
методаjobFinished
? Связаны ли они друг с другом?Существуют ли какие-либо ограничения, о которых мне следует знать? Например, минимальные и максимальные значения для каждой из функций?