Какое повышение производительности дает планировщик заданий по сравнению с startService () - PullRequest
0 голосов
/ 29 мая 2018

С Oreo служба не будет работать, если приложение не на переднем плане, но мы можем использовать JobSchedular для выполнения фоновых операций.

Тогда в чем же разница между JobScheduler иstartService(), и почему Android поддерживает JobSchedular более startService() для фоновых операций с oreo.

Я все еще могу Schedule тонн Jobs от фона, и это также повлияет на батареюспектакль.

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

В Oreo служба не будет работать, если приложение не на переднем плане

Да, будет.Это просто должна быть служба переднего плана.

Тогда какая разница между JobScheduler и startService ()

startService() немедленно.Задание, назначенное с JobScheduler, отсутствует.JobScheduler может отложить работу до более позднего времени, когда потребуется выполнить другую работу, чтобы минимизировать количество потребляемой энергии (для ЦП, для WiFi, для мобильных данных и т. Д.).

Также startService() всегда происходит.Задание с JobScheduler может не выполняться.Вы можете установить критерии для задания (например, требуется сетевое подключение), и задание будет выполняться только при соблюдении критериев.

и почему Android поддерживает JobSchedular поверх startService () для фонаоперации от oreo.

Потребляемая мощность, в основном, насколько я могу судить.

Я все еще могу планировать тонны заданий со стороны, и это также повлияет на батареюспектакль.

Да, но у Google есть намного лучший API для возможности контролировать это в будущем.Если разработчики злоупотребляют JobScheduler, будущие версии Android могут дополнительно ограничить скорость выполнения заданий, расширить режим ожидания для заданий и т. Д.

0 голосов
/ 29 мая 2018

С сайта разработчиков Android:

Фреймворк будет осведомлен о том, когда он выполняет задания, и будет пытаться как можно больше их пакетировать и откладывать.Обычно, если вы не указали крайний срок для задания, его можно запустить в любой момент в зависимости от текущего состояния внутренней очереди JobScheduler.

Во время выполнения задания система удерживает блокировку от именивашего приложения.По этой причине вам не нужно предпринимать никаких действий, чтобы гарантировать, что устройство остается активным в течение всего периода работы.

При запуске фоновой службы оно работает, даже если приложение находится вфон, поэтому он использует ресурсы.С JobScheduler ресурсы выделяются и используются только для конкретной работы и освобождаются, когда она выполнена.

...