Сегменты App Standby

В Android 9 (уровень API 28) и более поздних версиях поддерживаются группы приложений в режиме ожидания. Группы App Standby помогают системе определять приоритет запросов приложений на ресурсы в зависимости от того, как давно и как часто эти приложения используются. В зависимости от того, как часто вы используете приложения, они распределяются по пяти группам. Система ограничивает ресурсы устройства, доступные каждому приложению, в зависимости от того, в какой группе оно находится.

Сегменты приоритета

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

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

Ниже перечислены группы приоритетов.

Помимо этих групп, есть ещё одна – Никогда. В нее попадают приложения, которые были установлены, но ни разу не запускались. Система накладывает на такие приложения строгие ограничения.

Ниже приведены описания для случая, когда прогнозирование не используется. Если же для прогнозирования поведения используется машинное обучение, сегменты выбираются на основе ожидаемых действий пользователя, а не недавнего использования. Например, недавно использованное приложение может оказаться в группе "Редко", если машинное обучение предскажет, что оно не будет использоваться в течение нескольких часов.

Активно

Приложение относится к группе Активные, если оно используется в данный момент или использовалось недавно, а также если оно:

  • Запускает действие.
  • Запускает активную службу, которая работает долго.
  • Пользователь нажал на уведомление.

Если приложение находится в активной группе, система накладывает минимальные ограничения на его задания и оповещения:

  • Начиная с Android 16 (уровень API 36), фоновые задания получают щедрую квоту на время выполнения, если они запущены приложением из активной группы. Это относится к задачам, запланированным напрямую с помощью JobScheduler, а также к задачам, созданным другими библиотеками, такими как WorkManager или DownloadManager.

Приложения становятся активными в результате действий пользователя

В Android 9 (уровень API 28) и более поздних версиях, когда пользователь определенным образом взаимодействует с приложением, система временно помещает его в активную группу. После того как пользователь перестает взаимодействовать с приложением, система помещает его в группу на основе истории использования.

Ниже приведены примеры взаимодействий, которые запускают такое поведение системы.

  • Пользователь нажимает на уведомление, отправленное вашим приложением.

  • Пользователь взаимодействует с активной службой в вашем приложении, нажимая медиа-кнопку.

  • Пользователь подключается к вашему приложению при взаимодействии с Android Automotive OS, где приложение использует активную службу или CONNECTION_TYPE_PROJECTION.

Рабочий набор

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

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

С кем вы часто общаетесь

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

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

Редко

Приложение попадает в группу Редко, если оно используется нечасто. Например, приложение отеля, которое пользователь запускает только во время проживания в нем, может быть помещено в группу "Редко".

Если приложение находится в группе "Редко", система накладывает строгие ограничения на его способность выполнять задания и активировать оповещения. Система также ограничивает возможность приложения подключаться к интернету. Подробнее о лимитах на использование ресурсов для управления электропитанием…

Доступ ограничен

Эта группа, добавленная в Android 12 (уровень API 31), имеет самый низкий приоритет и самые строгие ограничения. Система учитывает поведение вашего приложения, например частоту взаимодействия пользователя с ним, чтобы решить, следует ли поместить ваше приложение в ограниченную группу.

На устройствах с Android 13 (уровень API 33) и более поздних версий система помещает приложение в группу с ограниченным доступом в перечисленных ниже случаях, если только для него не действует исключение.

  • Пользователь не взаимодействует с приложением в течение определенного количества дней. В Android 12 (уровень API 31) и 12L (уровень API 32) этот срок составляет 45 дней. В Android 13 этот срок сокращен до 8 дней.

  • Приложение вызывает слишком много трансляций или привязок в течение 24 часов.

Если система поместит ваше приложение в группу ограниченного доступа, будут действовать следующие ограничения:

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

Исключения из ограниченной группы

Следующие типы приложений не переводятся в группу с ограниченным доступом и не затрагиваются триггером неактивности даже на устройствах с Android 12 и более поздними версиями ОС:

Оценка сегмента приоритета

Чтобы узнать, к какой группе относится ваше приложение, выполните одно из следующих действий:

  • Позвоните по номеру getAppStandbyBucket().

  • Введите следующую команду в окне терминала:

    adb shell am get-standby-bucket PACKAGE_NAME

Система ограничивает работу приложения, когда оно помещается в группу App Standby, значение которой больше STANDBY_BUCKET_ACTIVE (10).

Рекомендации

Если ваше приложение соответствует рекомендациям для спящего режима и режима App Standby, то у вас не возникнет проблем с новыми функциями управления энергопотреблением. Однако некоторые действия, которые раньше выполнялись без проблем, могут привести к ошибкам.

  • Не пытайтесь манипулировать системой, чтобы поместить приложение в определенную группу. Приоритеты могут меняться, и каждый производитель устройств может написать собственное приложение для распределения по группам со своим алгоритмом. Вместо этого убедитесь, что ваше приложение работает правильно независимо от того, в какую группу оно входит.
  • Если у приложения нет действия запуска, оно может никогда не попасть в активную группу. Рекомендуем изменить дизайн приложения, чтобы в нем было такое действие.
  • Если пользователи не могут взаимодействовать с уведомлениями приложения, они не могут перевести его в активную группу. В этом случае подумайте о том, чтобы изменить дизайн некоторых уведомлений, позволяющих пользователям взаимодействовать. Рекомендации по оформлению уведомлений можно найти в руководстве по Material Design.

  • Если приложение не показывает уведомление при получении сообщения RemoteNotification Firebase Cloud Messaging (FCM), пользователь не может взаимодействовать с приложением и, следовательно, перевести его в активную группу. На самом деле, единственное предназначение RemoteNotification – отправка уведомления пользователю, поэтому такая ситуация не должна возникать. Для этих типов сообщений действует правило: если за 20 секунд не будет выполнено никаких действий, то будет показано исходное уведомление. Если приложение работает в активном режиме или пользователь разрешил его работу в фоновом режиме, принудительные меры не применяются.

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