Как обрабатывать остановку приложений с активными службами, инициированную пользователем

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

В нижней части панели уведомлений есть кнопка, на которой указано количество приложений, работающих в фоновом режиме. При нажатии на эту кнопку появляется диалоговое окно со списком приложений. Кнопка "Остановить" находится справа от каждого приложения.
Рисунок 1. Рабочий процесс Диспетчера задач на устройствах с Android 13 или более поздней версии.

Этот список называется Активные приложения. Рядом с каждым приложением есть кнопка Остановить. На рисунке 1 показан рабочий процесс Диспетчера задач на устройстве с Android 13.

Когда пользователь нажимает кнопку Остановить рядом с вашим приложением в Диспетчере задач, происходит следующее:

  • Система удаляет приложение из памяти. Поэтому останавливается все приложение, а не только активная служба.
  • Система удаляет обратный стек действий приложения.
  • Воспроизведение медиаконтента прекращается.
  • Уведомление, связанное с активной службой, удаляется.
  • Приложение останется в истории.
  • Запланированные задания выполняются в назначенное время.
  • Будильники срабатывают в заданное время или временной интервал.

Чтобы проверить, как приложение ведет себя во время и после остановки, выполните в окне терминала следующую команду ADB:

adb shell cmd activity stop-app PACKAGE_NAME