Android: tarefa ou aplicativo equivalente a OnPause
-
20-09-2019 - |
Pergunta
Meu aplicativo usa um serviço remoto para reproduzir áudio. Faço isso para que nenhuma atividade seja proprietária da reprodução do áudio - o usuário pode acionar algum áudio a ser reproduzido em uma atividade, e o áudio continuará tocando enquanto navegam pelo aplicativo. No entanto, quero dizer ao serviço para pausar ou parar de reproduzir áudio quando o usuário "descarregar" o aplicativo, recuando, bloqueando a tela ou chegando em casa. Quando o aplicativo era uma única atividade, eu estava fazendo isso no OnPause. Então, acho que estou essencialmente procurando "onPause" no nível de aplicativo/tarefa. Existe isso? Caso contrário, qual é a maneira da "prática recomendada" de ser notificada de que a tarefa foi suspensa pelo usuário que apóia todo o caminho ou chegando em casa?
Solução
Hmmmm ... infelizmente, suspeito que não há resposta fácil lá. Eu acho que é por isso que o media player embutido e o Pandora usam uma notificação, para deixar o usuário voltar ao aplicativo para fazê-lo calar a boca.
Se o seu fluxo de atividade for razoavelmente linear, a retirada do aplicativo será a mesma que a retirada da atividade inicial.
Um truque que usei em um cenário era ter cada atividade notificar o serviço em onPause()
e onResume()
. O serviço monitoraria isso e se tivesse um onPause()
sem um subsequente onResume()
Em algum período de tempo, assumiu -se que o usuário se foi (casa, telefonema de entrada, mensagem de texto recebida, respondendo a algum aplicativo por meio de uma notificação etc.).
Você também pode assistir ACTION_SCREEN_OFF
transmissão Intents
, para lidar com esse cenário.
Lamento não ter uma resposta melhor de bala de prata - talvez outra pessoa tenha uma ideia melhor.
Outras dicas
Eu estive em uma situação um tanto semelhante e, essencialmente, fiz o que Mark sugeriu; Em vez de uma notificação separada, eu simplesmente tinha o serviço contando as chamadas para minhas APIs RegisterCallback () e UnregisterCallback (), que cada atividade precisava fazer de qualquer maneira.