2012-09-04 14 views
5

Wenn ein Benutzer in meiner Anwendung auf "Abmelden" klickt, möchte ich, dass sie zur Aktivität "Anmelden" geleitet werden und alle anderen laufenden oder pausierten Aktivitäten in meiner Anwendung beenden.Android - Alle Aktivitäten beim Abmelden beenden

Meine Anwendung verwendet gemeinsame Einstellungen, um die "Login" -Aktivität beim Start zu umgehen, wenn sich der Benutzer zuvor angemeldet hat. Daher funktioniert FLAG_ACTIVITY_CLEAR_TOP in diesem Fall nicht, da sich die Login-Aktivität am Anfang des Aktivitätsstapels befindet, wenn der Benutzer dorthin gebracht wird.

+1

Hier ist Ihre Antwort .. http://stackoverflow.com/questions/5453206/how-to-close-all-the-activities-of-my-application – Abhishek

+0

Muss diese Antwort verpasst haben, sehr hilfreich. Danke –

Antwort

12

könnten Sie einen BroadcastReceiver verwenden für ein "kill-Signal" in anderen Aktivitäten

http://developer.android.com/reference/android/content/BroadcastReceiver.html

In Ihren Aktivitäten zu hören registrieren Sie BroadcastReceiver

IntentFilter intentFilter = new IntentFilter(); 
intentFilter.addAction("CLOSE_ALL"); 
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    // close activity 
    } 
}; 
registerReceiver(broadcastReceiver, intentFilter); 

Dazu einfach eine Sendung schicken von überall in Ihrer App

Intent intent = new Intent("CLOSE_ALL"); 
this.sendBroadcast(intent); 
+0

das hat wie ein Zauber funktioniert, danke für die Hilfe –

+0

Dies ist eine sehr saubere und schnelle Lösung. Upvote – sandalone

+0

So süße Weise, die Android API zu verwenden :) –

2

Statt FLAG_ACTIVITY_CLEAR_TOP Verwendung FLAG_ACTIVITY_CLEAR_TASK (obwohl API 11+):

Wenn in einer Intent auf Context.startActivity() übergeben, wird dieses Flag verursachen jede vorhandene Aufgabe, die mit der Aktivität in Verbindung gebracht werden, bevor gelöscht werden Die Aktivität wird gestartet. Das heißt, die Aktivität wird zur neuen Wurzel einer ansonsten leeren Aufgabe, und alle alten Aktivitäten sind beendet. Dies kann nur in Verbindung mit FLAG_ACTIVITY_NEW_TASK verwendet werden.

+0

Dies war pefect. Vielen Dank. :) – Enrichman

8

Für API 11+ Sie Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK wie diese verwenden:

Intent intent = new Intent(this, MyActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK); 
this.startActivity(intent); 

Es wird (n) und neue Tätigkeit völlig klar frühere Tätigkeit beginnen.

+0

Hey Rockstar, leg deine Gitarre hin :) – Karoly

+0

Das sollte die richtige Antwort sein. Verwenden Sie Broadcast für das ist so hack! –

Verwandte Themen