Transmissões de manuseio do Android em diferentes cenários
-
25-09-2019 - |
Pergunta
Registrei meu aplicativo para enviar uma transmissão em algum momento específico usando o Alarm Manager e configurei um receptor para ouvir essa transmissão.
Agora pode haver 2 casos:
- O sistema operacional sente que existe uma trituração de memória e remove o aplicativo do plano de fundo. A documentação do Android diz que o sistema operacional garantirá que meu receptor recebe minha transmissão. É verdade ? Como posso testar esse caso?
- Um usuário decide fechar meu aplicativo usando qualquer assassino de tarefas. Vou receber transmissão nesse caso também? Caso contrário, existe alguma maneira de lidar com esse caso?
Solução
O sistema operacional sente que existe uma trituração de memória e remove o aplicativo do plano de fundo.
Seu receptor não estará na memória de qualquer maneira. Seu receptor para uso com AlarmManager
deve ser registrado no manifesto, e esses receptores vivem apenas o tempo que levar para onReceive()
para correr.
É verdade ?
Sim.
Como posso testar esse caso?
Todo teste testará este caso, se o seu receptor estiver registrado no manifesto.
Um usuário decide fechar meu aplicativo usando qualquer assassino de tarefas. Vou receber transmissão nesse caso também?
No Android 2.1 e anterior, não. Os assassinos de tarefas também eliminam alarmes programados.
Caso contrário, existe alguma maneira de lidar com esse caso?
Na verdade, não, é por isso que isso foi eliminado com o Android 2.2.