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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top