Espero que alguém possa me ajudar a descobrir, se não uma solução, pelo menos uma explicação para um comportamento.
O problema:
Em alguns dispositivos, pressionar o ícone do iniciador faz com que a tarefa atual seja reiniciada; em outros, a intenção inicial de inicialização é acionada (reiniciando efetivamente o aplicativo). Por que isso acontece?
O detalhe:
Quando você pressiona o "Ícone do iniciador", o aplicativo inicia normalmente - ou seja, suponho que um Intent seja iniciado com o nome do seu primeiro Activity
com a ação android.intent.action.MAIN
e a categoria android.intent.category.LAUNCHER
. No entanto, esse nem sempre pode ser o caso:
Na maioria dos dispositivos, se você pressionar o ícone do iniciador após o aplicativo já estar em execução, a Atividade atualmente em execução nesse processo será retomada ( NÃO a inicial Activity
). Ele é retomado da mesma maneira como se você o tivesse selecionado em "Tarefas recentes" no menu do SO. Esse é o comportamento que eu quero em todos os dispositivos.
No entanto, em outros dispositivos selecionados, ocorre um comportamento diferente:
No Motorola Xoom, quando você pressiona o ícone do iniciador, o aplicativo sempre inicia o lançamento inicial,
Activity
independentemente do que está em execução no momento. Suponho que os ícones do iniciador sempre iniciem a intenção "LAUNCHER".Na guia 2 da Samsung, quando você pressiona o ícone do iniciador, se você acabou de instalar o aplicativo, ele sempre inicia a inicialização
Activity
(o mesmo que o Xoom) - no entanto, depois de reiniciar o dispositivo após a instalação, o ícone do iniciador será retomar o aplicativo. Presumo que esses dispositivos adicionem "aplicativos instalados" a uma tabela de pesquisa na inicialização do dispositivo, permitindo que os ícones do iniciador reiniciem corretamente as tarefas em execução?
Eu já li muitas respostas que soam semelhantes ao meu problema, mas simplesmente adicionando android:alwaysRetainTaskState="true"
ou usando launchMode="singleTop"
oActivity
não é a resposta.
Editar:
Após o lançamento mais recente deste aplicativo, descobrimos que esse comportamento começou a ocorrer em todos os dispositivos após a primeira reinicialização. O que parece loucura para mim, mas, olhando o processo de reinicialização, não consigo encontrar o que está errado.
finish()
-los nos casos em que começa o primeiro Activity
novamente, em vez de continuar com eles.