Processar a interrupção iniciada pelo usuário de apps que executam serviços em primeiro plano

No Android 13 (nível 33 da API) e versões mais recentes, os usuários podem concluir um fluxo de trabalho na gaveta de notificações para interromper um app que tem serviços em primeiro plano em andamento, independentemente da versão do SDK de destino. Essa funcionalidade, chamada de Gerenciador de tarefas, mostra uma lista de apps que estão executando um serviço em primeiro plano.

Na parte de baixo da gaveta de notificações, há um botão que indica o
    número de apps sendo executados em segundo plano. Ao pressionar
    esse botão, uma caixa de diálogo vai ser exibida, listando os nomes de diferentes apps. O
     botão "Parar" fica à direita de cada app.
Figura 1. Fluxo de trabalho do gerenciador de tarefas em dispositivos com o Android 13 ou mais recente.

A lista tem o rótulo Apps ativos. Ao lado de cada app há um botão Parar. A Figura 1 ilustra o fluxo de trabalho do Gerenciador de tarefas em um dispositivo com o Android 13.

Quando o usuário pressiona o botão Stop ao lado do app no Gerenciador de tarefas, as seguintes ações ocorrem:

  • O sistema remove o app da memória. Portanto, todo o app é interrompido, não apenas o serviço em primeiro plano em execução.
  • O sistema remove a backstack da atividade do app.
  • A reprodução de mídia é interrompida.
  • A notificação associada ao serviço em primeiro plano é removida.
  • O app permanece no histórico.
  • Os jobs programados são executados no horário programado.
  • Os alarmes são acionados no horário ou na janela de tempo programados.

Para testar se o app se comporta conforme o esperado ao ser interrompido pelo usuário, execute o comando ADB abaixo em uma janela de terminal:

adb shell cmd activity stop-app PACKAGE_NAME