Exibindo o menu principal do aplicativo/tela inicial ao retornar ao aplicativo depois de iniciar uma atividade/intenção externa
-
20-09-2019 - |
Pergunta
Estou iniciando o Android Market via meu aplicativo para pesquisar produtos semelhantes usando este código:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://market.android.com/search?q=pub:\"some txt\""));
c.startActivity(intent);
Isso funciona bem para mostrar produtos semelhantes. No entanto, se eu apertar o botão doméstico enquanto estiver no mercado, quando reabre o aplicativo, ele ainda mostra os resultados do mercado. Eu quero ir para o menu principal neste caso.
Há uma solução?
Solução
Desculpe, FLAG_ACTIVITY_NO_HISTORY
provavelmente não é a solução correta. Observe a semântica - a atividade simplesmente não aparece na história. Assim, se o usuário aproveitar uma das coisas para ir para a próxima atividade, depois pressionar, eles não retornarão ao anterior (mas o antes). Isso raramente é o que você quer.
Pior, se eles forem a uma segunda atividade da atividade do mercado, pressionem para casa e retornarem ao seu aplicativo, a segunda atividade ainda estará lá (ela se mantém na história).
A bandeira correta para esta situação é Flag_activity_clear_when_task_reset.
Outras dicas
Se você adicionar o FLAG_ACTIVITY_NO_HISTORY
Bandeira para a intenção, ela não será mantida na pilha de história. Quando o usuário navega de volta para o seu aplicativo, a última atividade que foi visível antes de lançar o mercado será mostrada.
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://market.android.com/search?q=pub:\"some txt\""));
c.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
c.startActivity(intent);
Editar: hackbod está correto: FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
é mais adequado para o que você precisa.
Isso não é um problema.
Quando você pressiona o aplicativo de mercado, ele não está fechado, apenas parado. Então, quando você o abre de novo, você retoma. Verificar Ciclo de vida da atividade Android.