Come eliminare un'attività Android quando la lasci in modo che non sia possibile accedervi dal pulsante Indietro?


131

In una determinata attività Android, vorrei iniziare una nuova attività per l'utente ad un certo punto. Una volta che lasciano la prima attività e arrivano alla seconda, la prima attività è stantia e voglio rimuoverla completamente in modo che non sia possibile accedervi nuovamente dal pulsante Indietro.

Qual è il modo migliore per raggiungere questo obiettivo? Come posso uccidere o distruggere questa attività immediatamente dopo che l'utente ha avviato la nuova attività?


Controlla questa risposta , mi è stata utile.
Daniyar,

Risposte:


235

Devi solo chiamare finish()

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

Grazie. Per fare un passo ulteriore, sto avviando la nuova attività da una finestra di dialogo: il codice funzionerebbe allo stesso modo?
John Rock

@CaseyB grazie per questo..ma voglio sapere, posso chiamare questo metodo da un servizio se sì allora come?
swiftBoy,

1
I servizi non hanno un'attività, il che significa che non saranno nello stack di attività a cui tornare. Se vuoi interrompere alcune attività dal tuo servizio, dovresti essere in grado di chiamare myActivity.finish ();
CaseyB,

3
È una risposta di 7 anni, ma ancora valida per Android M e N.
zeeshan il

1
@juztcode onDestroyè un metodo del ciclo di vita che deve essere chiamato solo dal framework Android.
CaseyB,

106

L'impostazione android:noHistory="true"dell'attività nel manifest rimuoverà un'attività dallo stack ogni volta che viene allontanata. vedi qui



8

Puoi anche aggiungere android:noHistory="true"al tuo Activitytag in AndroidManifest.xml.

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

7

Sì, tutto ciò che devi fare è chiamare finish () in qualsiasi attività che desideri chiudere.


4

Scrivi questo in ogni "nuova attività" dopo aver inizializzato il tuo nuovo intento->

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

2

Finalmente ho ottenuto una soluzione!

Il mio contesto è : - Voglio scollegare la connessione socket quando l'attività viene distrutta, ho provato a terminare l'attività () ma non mi ha funzionato , mantiene attiva la connessione da qualche parte.

quindi uso la android.os.Process.killProcess(android.os.Process.myPid()); sua attività kill e l'ho usato android:excludeFromRecents="true" per rimuovere da attività recenti.


1
Questa soluzione ha funzionato per me, ma sfortunatamente mostra una pagina vuota e per chiudere la connessione socket è possibile utilizzare socket.close (); .
Mehrdad,

android.os.Process.killProcess(android.os.Process.myPid())uccide il processo dell'app e non solo l'attività. Ciò significa che anche qualsiasi servizio in corso (in background o in primo piano) verrà interrotto.
Wrichik Basu,


0

Devi solo usare il codice qui sotto quando avvii la nuova attività.

startActivity(new Intent(this, newactivity.class));
finish();
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.