Система определяет приоритеты запросов приложений на ресурсы на основе состояния устройства, состояния приложения и резервного контейнера приложения .
Система Android может применять ограничения ресурсов двумя разными способами. Один из способов оптимизировать использование ресурсов — отложить выполнение работы до тех пор, пока устройство не выйдет из состояния низкого энергопотребления, например из режима дремоты . Например, регулярные задания и неточные сигналы тревоги откладываются, чтобы они выполнялись после выхода устройства из режима дремоты.
Другой способ — уменьшить время, в течение которого приложение может выводить устройство из спящего режима и выполнять работу, на основе текущего периода ожидания приложения. Система может уменьшить как частоту (как часто приложение выводит устройство из спящего режима), так и общую продолжительность (время, в течение которого устройство остается в спящем режиме). Например, если приложение находится в периоде редкого ожидания, оно может выполнять запланированные задания в течение 10 минут в течение 24-часового периода.
Обратите внимание, что WorkManager использует JobScheduler для планирования задач, когда приложение не видно, и на работников, таким образом, влияют ограничения ресурсов задания.
Более подробно об ограничениях можно узнать, прочитав:
- Ограничения ресурсов в зависимости от состояния устройства
- Ограничения ресурсов на основе состояния приложения
- Ограничения ресурсов на основе резервного контейнера приложения
Обратите внимание, что состояние устройства и состояние приложения могут перекрывать пределы интервала ожидания приложения. Например, если устройство заряжается, система позволяет приложениям в редком интервале ожидания выполнять задания дольше 10 минут в течение 24-часового периода.
Были изменения поведения, которые также повлияли на ограничения ресурсов. См. Изменения поведения Android, которые влияют на ограничения ресурсов, чтобы узнать больше.
Ограничения ресурсов в зависимости от состояния устройства
Система также может освобождать или применять ограничения ресурсов на основе состояния устройства. Например, устройству в состоянии зарядки предоставляется неограниченный доступ к ресурсам независимо от его резервного хранилища приложений.
Состояние устройства | Работа | Сигнализации | Сетевой доступ | Облачный обмен сообщениями Firebase |
Зарядка | Нет ограничений на выполнение, за исключением ограниченного резервного контейнера | Нет ограничений на выполнение для всех резервных контейнеров и состояний процессов, за исключением случаев, когда пользователь вручную ограничивает заряд батареи приложения | Никаких ограничений | Никаких ограничений |
Экран включен | Ограничения на выполнение применяются на основе резервного контейнера. | Ограничения на выполнение применяются на основе процесса приложения и резервного контейнера. | Доступ зависит от состояния резервного контейнера или процесса приложения. | Никаких ограничений |
Экран выключен и режим дремоты активен | Ограничения на выполнение применяются на основе резервного контейнера, а выполнение откладывается до окна обслуживания в режиме ожидания. | Ограничения на выполнение применяются на основе резервного контейнера. Регулярные сигналы тревоги: отложены до перехода в режим ожидания Сигналы тревоги при простое: ограничено 7 в час | Ограничено во время сна | Высокий приоритет: нет ограничений на выполнение Обычный приоритет: отложено до окна обслуживания в режиме ожидания |
Ограничения ресурсов на основе состояния приложения
Будет ли система применять ограничения ресурсов резервного контейнера приложения, зависит от важности процесса приложения. Ознакомьтесь с ActivityManager.RunningAppProcessInfo.importance
, чтобы понять различные уровни важности процесса.
Пользователь устройства также может вручную переопределить оптимизацию управления питанием приложения, что отменяет ограничения на время ожидания приложения.
Состояние приложения | Работа | Сигнализации | Сеть |
Процесс приложения виден или находится в активном состоянии | Нет ограничений по исполнению | Нет ограничений по частоте | Никаких ограничений |
Процесс приложения запускает службу переднего плана | Ограничения на выполнение применяются на основе резервного контейнера*** | Ограничения частоты применяются на основе резервного хранилища. | Никаких ограничений |
Пользователь вручную ограничивает заряд батареи приложения | Исполнение ограничено | Исполнение ограничено | Доступ зависит от поведения резервного контейнера |
Пользователь вручную снимает ограничение на использование батареи приложения | Лимит исполнения щедрый*** | Нет ограничений по исполнению | Без ограничений, если устройство не находится в режиме экономии трафика |
*** Поведение квоты выполнения для заданий изменилось в Android 16. До Android 16 не было ограничения на выполнение, когда приложение запускало службу переднего плана или пользователь не ограничивал заряд батареи приложения.
Ограничения ресурсов на основе резервного контейнера приложения
Примечание : Значения в этой таблице не гарантируют длительность выполнения, поскольку другие условия устройства или изменения контейнера могут повлиять на ограничения ресурсов. Значения также могут быть изменены в будущих выпусках Android.
Регулярные задания, ускоренные задания, оповещения и сетевой доступ могут быть ограничены на основе резервного контейнера приложения. Узнайте, как резервные контейнеры приложения влияют на ваше приложение, используя эти приблизительные ограничения управления питанием в качестве руководства. Для оптимальной производительности придерживайтесь лучших практик резервного приложения и оптимизируйте использование батареи для API планирования задач .
Обратите внимание, что начиная с Android 13 , резервный контейнер приложения больше не определяет, сколько высокоприоритетных FCM может использовать приложение.
Резервный контейнер приложений | Постоянная работа* | Ускоренные работы** | Сигнализации | Сеть |
Активный: | До 20 минут в течение 60-минутного периода*** | До 30 минут в течение 24 часов*** | Нет ограничений по исполнению | Никаких ограничений |
Рабочий набор: | До 10 минут в течение 4-часового периода | До 15 минут в течение 24 часов | Ограничено 10 в час | Никаких ограничений |
Частый: | До 10 минут в течение 12-часового периода | До 10 минут в течение 24 часов | Ограничено 2 в час | Никаких ограничений |
Редкий: | До 10 минут в течение 24-часового периода | До 10 минут в течение 24 часов | Ограничено 1 в час | Неполноценный |
Ограниченный: | Один раз в день до 10 минут | До 5 минут в скользящем 24-часовом окне | Неполноценный |
* Обычные задания описывают задания, которые не используют флаги setUserInitiated(true)
или setExpedited(true)
в JobScheduler или ускоренных рабочих в WorkManager.
** Ускоренные задания имеют отдельный лимит выполнения, отличный от обычных заданий. Их можно настроить в WorkManager для продолжения выполнения с использованием лимитов выполнения обычных заданий после исчерпания ускоренных лимитов.
*** Поведение квоты выполнения для заданий изменилось в Android 16. До Android 16 не было ограничения на выполнение, когда приложение находилось в активном режиме ожидания.
Изменения в поведении Android, влияющие на ограничения ресурсов
Следующие обновления Android внесли изменения в ограничения ресурсов приложений.
Андроид 16
Изменение поведения оптимизации квот JobScheduler
Android скорректировал квоту времени выполнения обычных и ускоренных заданий на основе следующих факторов:
- В каком режиме ожидания приложения находится приложение
- Если задание начинает выполняться, когда приложение находится в верхнем состоянии
- Если задание выполняется во время работы службы переднего плана
Андроид 13
Изменение поведения квот высокоприоритетного сообщения Firebase Cloud (FCM)
- App Standby Buckets больше не определяют, сколько FCM с высоким приоритетом может использовать приложение.
- Теперь система понижает приоритет сообщений, если обнаруживает приложение, постоянно отправляющее сообщения с высоким приоритетом, которые не приводят к уведомлениям.
- Текущие рекомендации по сообщениям с высоким приоритетом см. в документации Firebase по установке и управлению приоритетом сообщений .
Андроид 9
Представлена функция App Standby Buckets
Android 9 представляет новую функцию управления батареей, App Standby Buckets. App Standby Buckets помогает системе расставлять приоритеты запросов приложений на ресурсы на основе того, как давно и как часто используются приложения. На основе моделей использования приложений каждое приложение помещается в один из пяти приоритетных сегментов. Система ограничивает ресурсы устройства, доступные каждому приложению, на основе того, в каком сегменте находится приложение.