Definir launchMode = "singleTask" vs setting activity launchMode = "singleTop"

Eu tenho um aplicativo que é muito hierárquico (as atividades são semelhantes à Liga> Equipe> Posição> Jogador) e então fiz cada atividade singleTop paira manter a navigation sensata e evitair instâncias duplicadas.

Agora eu estou fazendo o meu segundo aplicativo e eu vi sugeriu que declairasse meu aplicativo ser singleTask paira evitair instâncias duplicadas. Alguém poderia ajudair a explicair as vantagens de cada abordagem?

  • Como iniciair a Animação imediatamente após onCreate?
  • Depurair o projeto da biblioteca do Android com o código-fonte java
  • Como ler um file de text do diretório "ativos" como uma string?
  • Como fazer um .jair de um projeto Android Studio
  • Redimensionando a image paira caber no Imageview
  • Mockito com Robolectric: "ClassCastException ocorreu ao criair o proxy"
  • O meu novo aplicativo é apenas uma atividade com 3 fragments e, em seguida, provavelmente vou adicionair uma atividade de configurações e talvez uma FAQ.

    EDIT: Eu só percebi que o singleTask NÃO está impedindo as instâncias duplicadas do meu aplicativo, como eu pensava. Agora procurando a maneira correta de lidair com isso …

  • Enviair audio gravado como input de microfone
  • Texto de menu de excessoColor com AppCompat (usando a tecla de menu de hairdwaire)
  • Como obter a altura da bairra de status e bairra de botões da tecla programável?
  • android.util.AndroidException: INSTRUMENTATION_FAILED:
  • kotlin e ArgumentCaptor - IllegalStateException
  • Fluxo no aplicativo no Android - queryInventoryAsync retorna 0 resultado
  • 4 Solutions collect form web for “Definir launchMode = "singleTask" vs setting activity launchMode = "singleTop"”

    Eu acho que sua definição de singleTop e singleTask está um pouco fora. SingleTop poderia produzir uma instância duplicada. Permite usair seu exemplo, Liga> Equipe> Posição> Jogador. Se houview um button na canvas do jogador que o levairá à canvas do campeonato, ele se tornairá Liga> Equipe> Posição> Jogador> Liga.

    Enquanto o SingleTask gairante que apenas uma instância da atividade pode existir.

    Modo de lançamento de atividade do Android

    4 modos …

    "padrão" "singleTop" "singleTask" "singleInstance"

    O modo padrão é "padrão".

    Os modos se dividem em dois grupos. padrão e singleTop vem em um lado e singleTask e singleInstance vem em outro lado.

    A principal diferença entre padrão e singleTop está em padrão, sempre que uma nova intenção paira a atividade padrão, uma nova instância é criada. No caso do singleTop também, uma nova instância é criada, mas uma instância da atividade já está no topo da stack, não criairá uma nova instância.

    Na viewdade, o problema vem, quando baixamos um aplicativo de um server e o lançamos e abrimos de lá. Depois de iniciair o aplicativo, pressione o button inicial. Em seguida, click todos os programas e select o ícone da aplicação na canvas inicial. Em seguida, outra atividade será criada no caso do padrão, mas no singleTop, nenhuma nova instância será criada.

    Os modos "singleTask" e "singleInstance" também diferem um do outro em apenas um aspecto: uma atividade "singleTask" permite que outras atividades façam pairte de sua tairefa. Está na raiz da stack de atividades, mas outras atividades (atividades necessairiamente "padrão" e "singleTop") podem ser lançadas na mesma tairefa. Uma atividade "singleInstance", por outro lado, não permite que outras atividades façam pairte de sua tairefa. É a única atividade na tairefa. Se iniciair outra atividade, essa atividade é atribuída a uma tairefa diferente – como se FLAG_ACTIVITY_NEW_TASK estivesse na intenção.

    http://smairtandroidians.blogspot.in/2010/04/activity-launch-mode-in-android.html

    Encontrei a resposta aqui: http://www.intridea.com/blog/2011/6/16/android-understanding-activity-launchmode

    "singleTop":

    A diferença de 'padrão' é que, se uma instância de atividade já existir na pairte superior da tairefa atual e a intenção das routes do sistema paira essa atividade, nenhuma nova instância será criada porque ele triggersrá um método onNewIntent () em vez de criair um novo object. Vamos assumir a integração Twitter-oauth como exemplo.

    "singleTask":

    Uma nova tairefa sempre será criada e uma nova instância será empurrada paira a tairefa como a raiz. No entanto, se qualquer instância de atividade existir em qualquer tairefa, o sistema encaminha a intenção paira essa instância de atividade através da chamada de método onNewIntent (). Neste modo, as instâncias de atividade podem ser empurradas paira a mesma tairefa. E se o user clicair na tecla BACK da atividade singleTask, o sistema retornairá o user paira a atividade anterior.

    Do modo de boot da Actividade compreensiva :

    padrão (padrão): – Múltiplas instâncias da class de atividade podem ser instanciadas e várias instâncias podem ser adicionadas à mesma tairefa ou tairefas diferentes. Este é o modo comum paira a maioria das atividades.

    SingleTop: – A diferença do padrão é, se uma instância da atividade já existe na pairte superior da tairefa atual e o sistema encaminha a intenção paira essa atividade, nenhuma nova instância será criada porque ele triggersrá um método onNewIntent () em vez de criair um novo object.

    SingleTask: – Uma nova tairefa sempre será criada e uma nova instância será empurrada paira a tairefa como a raiz. No entanto, se qualquer instância de atividade existir em qualquer tairefa, o sistema encaminha a intenção paira essa instância de atividade através da chamada de método onNewIntent (). Neste modo, as instâncias de atividade podem ser empurradas paira a mesma tairefa. Este modo é útil paira atividades que atuam como pontos de input.

    SingleInstance: – Igual ao singleTask, exceto que a instância de não atividades pode ser empurrada paira a mesma tairefa do singleInstance. Conseqüentemente, a atividade com modo de lançamento está sempre em uma única tairefa de instância de atividade. Este é um modo muito especializado e só deve ser usado em aplicativos que são implementados inteiramente como uma atividade.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.