Todas as atividades no meu aplicativo exigem que um usuário esteja logado para visualizar. Os usuários podem sair de praticamente qualquer atividade. Este é um requisito do aplicativo. A qualquer momento, se o usuário sair, quero enviar o usuário para o Login Activity
. Nesse ponto, quero que essa atividade esteja na parte inferior da pilha do histórico, de modo que pressionar o botão "voltar" retorne o usuário à tela inicial do Android.
Já vi essa pergunta em alguns lugares diferentes, todas respondidas com respostas semelhantes (que descrevi aqui), mas quero colocá-la aqui para obter feedback.
Tentei abrir a atividade de logon definindo seus Intent
sinalizadores para o FLAG_ACTIVITY_CLEAR_TOP
que parece fazer o descrito na documentação, mas não alcança meu objetivo de colocar a atividade de logon na parte inferior da pilha do histórico e impedindo que o usuário volte. às atividades de logon vistas anteriormente. Também tentei usar android:launchMode="singleTop"
a atividade Login no manifesto, mas isso também não cumpre minha meta (e parece não ter efeito mesmo).
Acredito que preciso limpar a pilha de histórico ou concluir todas as atividades abertas anteriormente.
Uma opção é ter o onCreate
status de logon de verificação de cada atividade e, finish()
se não estiver logado. Não gosto dessa opção, pois o botão Voltar ainda estará disponível para uso, navegando de volta à medida que as atividades se fecham.
A próxima opção é manter uma LinkedList
referência a todas as atividades abertas que são estaticamente acessíveis de qualquer lugar (talvez usando referências fracas). No logout, acessarei esta lista e repetirei todas as atividades abertas anteriormente, invocando finish()
cada uma. Provavelmente vou começar a implementar esse método em breve.
Eu prefiro usar alguns Intent
truques de bandeira para fazer isso, no entanto. Ficaria feliz em descobrir que posso atender aos requisitos do meu aplicativo sem precisar usar nenhum dos dois métodos descritos acima.
Existe uma maneira de fazer isso usando Intent
ou manifestar configurações ou a minha segunda opção é manter uma LinkedList
das atividades abertas a melhor opção? Ou existe outra opção que estou completamente ignorando?