Приложение в памяти и работающее приложение — не одно и то же
На настольном компьютере программа может часами оставаться запущенной и продолжать выполнять код. Для смартфона такой подход слишком расточителен: если десятки приложений смогут бесконтрольно обращаться к сети, запрашивать координаты, будить процессор и поддерживать собственные соединения, аккумулятор будет заметно разряжаться даже при выключенном экране.
Поэтому Android не обещает приложению постоянную жизнь. Процесс может оставаться в оперативной памяти как кэш, но само присутствие в RAM еще не означает, что программе разрешено выполнять код, использовать сеть или запускать произвольные фоновые службы. Когда память понадобится системе, кэшированный процесс можно удалить, а при следующем открытии создать заново. Для правильно написанного приложения это штатная ситуация.
Отсюда следует важное различие. Удаление процесса из памяти само по себе не должно ломать push-уведомления, будильники или корректно запланированные фоновые задачи. Проблемы начинаются тогда, когда приложению требуется выполнить определенную работу, а выбранный разработчиком механизм сталкивается с ограничениями Android или дополнительной политикой производителя смартфона.
Почему Android вообще начал ограничивать фоновые процессы
В ранних версиях системы разработчик мог запустить Service и оставить его работающим довольно свободно. Для программирования это было удобно, но для автономности — нет. Десятки приложений начинали независимо проверять серверы, удерживать процессор активным и регулярно выводить радиомодем из энергосберегающего состояния ради нескольких килобайт данных.
Постепенно Android стал передавать контроль над такими операциями самой системе. Появились Doze, App Standby, JobScheduler, WorkManager, ограничения background services, foreground services и квоты на отдельные виды фоновой активности. Современное приложение должно сообщать Android не просто "я хочу работать", а что именно оно собирается делать и насколько эта задача срочная.
Именно поэтому советы времен Android 5 вроде "не закрывайте приложение и пусть его сервис постоянно висит в памяти" сегодня плохо описывают устройство системы.

Что происходит после выключения экрана
Погасший экран не означает мгновенный глубокий сон. Системные службы продолжают работать, мессенджер способен получить push, музыкальный проигрыватель — воспроизводить музыку, а навигатор — обновлять координаты, если длительная работа оформлена предусмотренным Android способом.
При продолжительном бездействии смартфон может перейти в Doze. Согласно документации Android по Doze и App Standby, система в таком состоянии ограничивает обычный сетевой доступ приложений, откладывает задания JobScheduler и WorkManager, игнорирует обычные wake lock и переносит стандартные AlarmManager-события на периоды активности.
Телефон при этом не остается "мертвым" до следующей разблокировки. Android периодически открывает maintenance window — короткое окно, в котором приложения могут получить сеть и выполнить накопившуюся работу. Если устройство долго остается без движения и использования, интервалы между такими окнами способны увеличиваться. Поэтому обычная фоновая синхронизация не обязана срабатывать каждую минуту.
Doze нередко описывают как функцию, которая "убивает программы", но это неточно. Ее основная задача — ограничить доступ к ресурсам. Приложение вполне может оставаться в RAM и одновременно не иметь возможности произвольно выйти в сеть. Обратная ситуация тоже возможна: процесс удален из памяти вообще без участия Doze.
Для пользователя результат иногда выглядит одинаково: программа долго молчит, а после разблокировки сразу обновляется. Но попытка "закрепить ее в оперативной памяти" в таком случае не отменит сетевые ограничения Doze.
Почему мессенджер может получать сообщения, даже когда его процесса нет в памяти
Обычный push не требует, чтобы каждый мессенджер круглосуточно держал собственное соединение с сервером. На устройствах с Google Mobile Services эту задачу обычно берет на себя Firebase Cloud Messaging. Сервер приложения сообщает FCM о новом событии, системная инфраструктура доставляет его на устройство, а Android передает сообщение нужному приложению.
Такой подход экономнее, чем десятки независимых постоянных соединений. Google рекомендует использовать серверные события вместо частого фонового опроса в документации об оптимизации сетевой активности Android.
При этом не все push равнозначны. Обычное сообщение во время Doze может подождать и прийти позднее вместе с другими событиями. High priority предусмотрен для действительно срочной информации и способен временно разбудить приложение, но разработчик не может бесконечно объявлять срочной каждую рекламу или новость. Android следит за использованием высокого приоритета и может понизить его, если приложение злоупотребляет механизмом.
Поэтому задержка уведомления бывает связана не только с настройками смартфона. Иногда сервер приложения неправильно назначает приоритет, использует неудачную push-архитектуру или слишком сильно рассчитывает на собственный постоянно работающий процесс. Это пользователь уже не исправит одной галочкой в настройках батареи.
Почему ситуация меняется на смартфонах без Google-сервисов
FCM относится к инфраструктуре Google, а не к открытому Android как таковому. На Huawei без Google Mobile Services приложения могут использовать Huawei Push Kit, собственные каналы производителя либо другие схемы доставки. Некоторые разработчики поддерживают сразу несколько push-систем в зависимости от устройства.
Если программа рассчитана только на FCM, на смартфоне без соответствующих сервисов уведомления могут работать нестабильно или не работать вообще. Есть и противоположный вариант: приложение держит собственное соединение с сервером, а тогда оно сильнее зависит от политики фоновой активности конкретной оболочки.
Этим объясняется ситуация, когда два мессенджера на одном смартфоне ведут себя по-разному. Один использует корректную системную push-инфраструктуру, второй пытается поддерживать свое соединение и чаще сталкивается с энергосбережением.
Doze ограничивает устройство, App Standby — конкретное приложение
Эти механизмы часто смешивают, хотя они решают разные задачи. Doze прежде всего описывает состояние самого устройства. App Standby оценивает, насколько активно пользователь работает с конкретной программой.
В современных версиях Android для этого используются App Standby Buckets. Приложения распределяются по группам Active, Working Set, Frequent, Rare и Restricted. Часто используемая программа получает больше возможностей, чем утилита, которую не открывали несколько недель. По мере перехода к более жестким категориям сокращаются квоты на фоновые задания, сеть и некоторые другие операции.
Категория не назначается навсегда. Если человек снова начинает активно пользоваться приложением, система может ослабить ограничения. Поэтому характерный сценарий "открыл программу — несколько дней все нормально — потом уведомления снова начинают опаздывать" вполне укладывается в работу App Standby, особенно если производитель смартфона добавил поверх него собственный механизм сна приложений.
Optimized, Unrestricted и Restricted: что меняется на практике
В стандартном Android приложение обычно работает в оптимизированном режиме. Система сама решает, сколько фоновой активности ему разрешить с учетом поведения пользователя и текущего состояния устройства. Для подавляющего большинства программ это правильное значение.
Unrestricted снимает часть ограничений и дает приложению больше свободы. Это полезно, если его основная функция действительно требует надежной фоновой работы, но расплачиваться приходится потенциально повышенным энергопотреблением. Restricted действует в противоположную сторону: фоновая работа ограничивается настолько сильно, что отдельные функции приложения могут перестать работать корректно. На это прямо указывает Google в документации по фоновой оптимизации.
Названия пунктов зависят от оболочки. Где-то это "Без ограничений", где-то "Не оптимизировать", "Разрешить работу в фоне" или похожая формулировка. Поэтому инструкция, привязанная к одному конкретному пути меню, стареет быстрее, чем объяснение самой функции.
Переводить все установленные приложения в Unrestricted бессмысленно. Игре, магазину или сервису доставки обычно не нужна круглосуточная свобода. Исключение гораздо логичнее сделать для VPN, спортивного трекера, приложения автоматизации, клиента внешнего BLE-устройства или программы, для которой своевременная фоновая работа действительно является частью основной функции.
Уведомления могут быть отключены, даже если приложение прекрасно работает
После появления отдельного разрешения POST_NOTIFICATIONS в Android 13 отсутствие уведомления нельзя автоматически считать доказательством того, что программа "уснула". Пользователь мог запретить уведомления полностью либо отключить один из каналов: например, оставить сообщения и убрать служебные статусы.
Отдельно управляются звук, всплывающие окна и показ на экране блокировки. Поэтому диагностику разумно начинать именно здесь. Если событие было получено вовремя, но Android его не показал, искать проблему в Doze бесполезно. Если же уведомление появляется только после открытия самого приложения, вероятность проблемы с фоновой доставкой становится заметно выше.
Почему по Wi-Fi все работает, а через мобильную сеть — нет
Оптимизация батареи и ограничение трафика являются независимыми системами. Можно разрешить приложению фоновую активность по энергии и одновременно запретить ему мобильные данные в фоне. Со стороны это выглядит почти так же: пока программа закрыта, сообщений нет, после запуска все мгновенно синхронизируется.
Поэтому полезно отдельно проверить работу через Wi-Fi и мобильную сеть. Если задержки появляются только во втором случае, главным подозреваемым становится уже не Doze, а Data Saver, разрешение фоновой передачи данных, VPN, частный DNS или особенности сети оператора.
Контрольный тест через другую сеть вообще полезен чаще, чем кажется. Если одинаковая задержка одновременно возникает на Android и iPhone либо у нескольких людей, индивидуальная настройка батареи одного смартфона становится маловероятной причиной.
Почему замок в списке последних приложений не является универсальным решением
Некоторые оболочки позволяют "закрепить" приложение в Recents. Пользователь видит значок замка и вполне логично предполагает, что теперь система никогда не сможет закрыть программу. Обычно смысл функции намного уже.
Такой замок способен защитить карточку от команды "Закрыть все" или части фирменных механизмов очистки памяти. Но он не отменяет Doze, квоты JobScheduler, правила AlarmManager, фоновые сетевые ограничения и разрешения Android. Кроме того, производители реализуют эту функцию по-разному.
Использовать закрепление как дополнительную настройку на конкретной прошивке можно. Рассматривать его как аналог "не закрывать процесс никогда" — нет.
Почему регулярная очистка RAM скорее мешает
Android не нуждается в том, чтобы пользователь вручную освобождал всю оперативную память. Свободная RAM сама по себе не ускоряет смартфон. Если память сейчас не нужна, системе выгоднее оставить в ней недавно использованные процессы, чтобы не загружать их заново.
Когда место потребуется другой программе, Android сам освободит кэшированные процессы. Сторонний RAM cleaner при этом не получает какой-то особой власти над системой, зато сам становится еще одной постоянно работающей программой. В некоторых сценариях принудительное закрытие даже увеличивает последующий расход энергии, поскольку приложение приходится заново загружать и инициализировать.
Большой объем RAM действительно помогает многозадачности: тяжелая игра реже будет выгружена после перехода в камеру или браузер. Но к Doze, App Standby, запрету фонового трафика и Sleeping apps Samsung это отношения не имеет. Смартфон с 16 ГБ памяти способен задерживать уведомления ровно по тем же причинам, что и модель с 6 ГБ.
По той же причине не спасает "расширение RAM". Memory Extension и похожие функции используют накопитель как дополнительную область для выгрузки данных, но не дают приложению новых системных прав. Включение еще "8 ГБ виртуальной памяти" не отменит Doze и не исправит неправильно работающий push.

