Sobre o android launchmode "singleTask"
-
12-12-2019 - |
Pergunta
Eu li o guia do desenvolvedor do android e alguns artigos na internet, eu ainda estou confusa sobre o singleTask
launchmode
.Vamos tomar um exemplo:
Usuário iniciar o App1, android começa uma nova tarefa.Suponha que o App1 cria atividades em seguir a ordem:
ActivityA -> ActivityB -> ActivityC
É assim que task1 parece.
Em seguida, o usuário clique no botão e escolha o lançamento App2, então, task1 vai no fundo e android iniciar uma nova tarefa:task2, o usuário faz alguma coisa:
ActivityD -> ActivityE
agora vamos dizer que ActivityE
tente iniciar ActivityB
e ActivityB
tem o launchmode singleTask
.
O que eu entendo é que task1 vem para frontend novamente e task2 vai para o fundo.E task1 olha agora como esta:
ActivityA -> ActivityB
O que significa:
O
ActivityC
será removido do task1 e ActivityB torna-se para o topo da Atividade.Se o usuário clique agora no botão "Voltar", ele virá para
ActivityA
task1 em vez de voltar paraActivityE
de task2
Estou certo?
Obrigado
Solução
O ActivityC será removido do task1 e ActivityB torna-se para o topo da Atividade.
Sim, você está Certo...
ActivityC será removido do i.é.o onDestroy método de ActivityC será chamado.Assim, quando o utilizador inicia a Tarefa 1 novamente, o ActivityB é mostrado ao invés de ActivityC.
Criou 2 Tarefas (Projetos) e enviado o mesmo @ SendSpace.Experimentá-lo...
Se você olhar para androids documentação ele diz
"Um "singleTask" atividade permite que outras atividades para ser parte de sua tarefa.É sempre na raiz de sua tarefa, mas outras actividades (não necessariamente "padrão" e "singleTop" atividades), pode ser lançado para essa tarefa."
O que significa que quando você clica o botão home que todas as atividades acima, a única atividade de tarefa (que no seu caso é ActivityB) são removidos da pilha.
No aplicativo de exemplo do que eu tinha dado anteriormente, se você acabou de executar o projeto "AndroidTest" e clique no botão home nos logs você pode ver que a 2º Atividade é colocar em Pausa, e quando você iniciá-lo novamente a partir do Recente "Aplicativo" lista a 2º Atividade é Destruído.
Em um cenário onde a Atividade é acima de Instância Única de atividades (ActivityB) não são removidos da Pilha de Volta, e outro pedido de aplicação desta Atividade (ActivityB) pode não ser mostrado e a intenção pode ser descartado.Mas isso tem extreamly menos chances de acontecer, pois o usuário terá que pressionar o botão Home e, mas a Tarefa atual\App no BackStack antes que ele pudesse navegar para outra Tarefa\App.
Daí o aviso
Os outros modos — singleTask e single-instance — não são apropriados para a maioria das aplicações, uma vez que resultam em um modelo de interação que é susceptível de ser desconhecidas dos usuários e é muito diferente da maioria dos outros aplicativos.
Eu espero que isso resolve suas dúvidas.
Outras dicas
O som direito.
Por que você não testa-lo.
Também existe um aplicativo que pode ajudar a explicar o modo de lançamento:
https://play.google.com/store/apps/details?id=com.novoda.demos.activitylaunchmode
Fontes estão em https://github.com/gnorsilva/Activities-LaunchMode-demo