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