Como eliminar uma atividade do Android ao deixá-la para que não possa ser acessada pelo botão Voltar?


130

Em uma determinada atividade do Android, eu gostaria de iniciar uma nova atividade para o usuário em algum momento. Depois que eles saem da primeira atividade e chegam à segunda, a primeira atividade fica obsoleta e eu quero removê-la completamente para que não possa ser acessada novamente pelo botão Voltar.

Como é a melhor maneira de conseguir isso? Como eu mato ou destruo essa atividade imediatamente após o usuário ter lançado a nova atividade?


Verifique esta resposta , foi útil para mim.
Daniyar

Respostas:


234

Você só precisa ligar finish()

Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
finish();

Obrigado. Para dar um passo adiante, estou iniciando a nova atividade em uma janela de diálogo - o código funcionaria da mesma maneira?
JohnRock

@ CaseyB obrigado por isso ... mas eu quero saber, posso chamar esse método de um serviço? Se sim, então como?
swiftBoy

1
Os serviços não têm uma atividade, o que significa que eles não estarão na pilha de atividades para voltar. Se você deseja eliminar alguma atividade do seu serviço, deve poder chamar myActivity.finish ();
CaseyB

3
É uma resposta 7 anos de idade, e ainda válido para Android M e N.
zeeshan

1
O @juztcode onDestroyé um método de ciclo de vida que deve ser chamado apenas a partir da estrutura do Android.
CaseyB

106

A configuração android:noHistory="true"da atividade em seu manifesto removerá uma atividade da pilha sempre que ela for navegada. veja aqui



8

Você também pode adicionar android:noHistory="true"à sua Activitytag em AndroidManifest.xml.

<activity
            ...
            android:noHistory="true">
</activity>

7

Sim, tudo o que você precisa fazer é chamar finish () em qualquer atividade que você gostaria de encerrar.


4

Escreva isso em cada "nova atividade" depois de inicializar sua nova intenção->

Intent i = new Intent(this, yourClass.class);
startActivity(i);
finish();

2

Finalmente, eu tenho uma solução!

Meu contexto é : - Quero desconectar a conexão do soquete quando a atividade é destruída, tentei terminar a atividade (), mas ela não funcionou , pois mantém a conexão ativa em algum lugar.

então eu uso android.os.Process.killProcess(android.os.Process.myPid()); o kill minha atividade e usei android:excludeFromRecents="true" para remover da atividade recente.


1
Esta solução funcionou para mim, mas infelizmente mostra uma página em branco e, para fechar a conexão do soquete, você pode usar o socket.close (); .
Mehrdad

android.os.Process.killProcess(android.os.Process.myPid())mata o processo do aplicativo e não apenas a atividade. Isso significa que qualquer serviço em andamento (em segundo plano ou em primeiro plano) também será interrompido.
Wrichik Basu 14/04


0

Você só precisa usar o código abaixo ao iniciar a nova atividade.

startActivity(new Intent(this, newactivity.class));
finish();
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.