Android Cancellare una pila di attività


Esempio

A volte potresti voler iniziare una nuova attività rimuovendo le attività precedenti dallo stack posteriore, quindi il pulsante Indietro non ti riporta indietro. Un esempio potrebbe essere l'avvio di un'app sull'attività di accesso, che ti porterà all'attività principale della tua applicazione, ma alla disconnessione vuoi essere reindirizzato al login senza la possibilità di tornare indietro. In un caso del genere puoi impostare il flag FLAG_ACTIVITY_CLEAR_TOP per l'intento, ovvero se l'attività avviata è già in esecuzione nell'attività corrente (LoginActivity), quindi anziché avviare una nuova istanza di tale attività, tutte le altre attività in alto di esso sarà chiuso e questo Intento sarà consegnato alla vecchia attività (ora in cima) come un nuovo Intento.

Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

È inoltre possibile utilizzare le flag FLAG_ACTIVITY_NEW_TASK insieme a FLAG_ACTIVITY_CLEAR_TASK se si desidera cancellare tutte le attività nel back stack:

Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
// Closing all the Activities, clear the back stack.
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);