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:

  1. O ActivityC será removido do task1 e ActivityB torna-se para o topo da Atividade.

  2. Se o usuário clique agora no botão "Voltar", ele virá para ActivityA task1 em vez de voltar para ActivityE de task2

Estou certo?

Obrigado

Foi útil?

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

enter image description here

Fontes estão em https://github.com/gnorsilva/Activities-LaunchMode-demo

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