@App perde a capacidade de lembrar sua pilha quando iniciado a partir de outro aplicativ

Agora que eu pesquisei isso ainda mais, estou reescrevendo isso para torná-lo mais claro. Se você está procurando mais informações, há algumas disponíveis em edições mais antigas.

O que está acontecendo

(Refere-se a um aplicativo que não definiu nenhuma configuração launchMode e, portanto, está usando os padrões)

Você inicia um aplicativo no Market ou no Instalador. Isso inicia a atividade principal / raiz do aplicativo com o sinalizador FLAG_ACTIVITY_NEW_TASK e sem categorias. No momento, a pilha de aplicativos é [A]

Depois prossiga para a próxima atividade no aplicativo. Agora a pilha nesta tarefa é [A> B]

Em seguida, pressione a tecla home e, em seguida, reinicie o mesmo aplicativo pressionando o ícone na tela inicial ou na bandeja de aplicativo

O que é esperado neste momento é que a atividade B seja exibida, pois é aí que você parou. No entanto, A é mostrado e a pilha de tarefas é [A> B> A] Esta segunda instância de A é iniciada com os seguintes sinalizadores: FLAG_ACTIVITY_NEW_TASK, FLAG_ACTIVITY_RESET_IF_NEEDED e FLAG_ACTIVITY_BROUGHT_TO_FRONT. Ele também tem a categoria android.intent.category.LAUNCHER.

Nesse momento, se você pressionar a tecla Voltar, você retornará para B, como era quando você a deixo

Observando a documentação, parece que FLAG_ACTIVITY_BROUGHT_TO_FRONT deve ser definido apenas para atividades que usam o singleTask ou singleTop launchModes. No entanto, este aplicativo não definiu nenhum launchModes e, portanto, está usando o launchMode padrão padrão.

Presumo que isso não deva acontecer neste caso?

Também devo observar que, uma vez que entra nesse estado estranho, acontece sempre que o aplicativo é iniciado a partir da tela inicial ou da bandeja do aplicativo. Se a tarefa estiver concluída (reiniciar o telefone, forçar a interrupção do aplicativo ou retornar a pilha), o problema será corrigido e não será mais iniciado incorretamente. Isso só acontece se você iniciar o aplicativo a partir do instalador ou do mercado e tentar iniciá-lo a partir do iniciador.

Então, em resumo, por que isso está acontecendo? Existe uma maneira de evitá-lo?

questionAnswers(2)

yourAnswerToTheQuestion