2013-11-26 2 views
14

Meine Anwendung hat den folgenden DurchflussWie beendet man alle Aktivitäten und schließt die Anwendung in Android?

Home-> Bildschirm 1-> Bildschirm 2-> Bildschirm 3-> 4- Bildschirm> Bildschirm 5> Home-> Bildschirm 2-> Home-> Screen 3

Mein Problem ist, dass, wenn ich versuche, die Anwendung zu schließen, die Home-Aktivität immer dann geöffnet wird, wenn ich versuche, die Anwendung zu schließen.

Ich möchte nur die Anwendung schließen, wenn Benutzer die Zurück-Taste des Geräts auf dem Startbildschirm drückt.

+0

siehe dies: http://stackoverflow.com/questions/4758462/android-finish-all-activities – Avijit

Antwort

52

gibt es finishAffinity() -Methode, die die aktuelle Aktivität und alle übergeordneten Aktivitäten beenden, aber es funktioniert nur in Android 4.1 oder höher

+2

Das war ein Lebensretter ...! – GAMA

0

Fügen Sie android:noHistory="true" in Ihrer Aktivitätsmanifestdatei hinzu.

+0

Ich wette, er will zurück zum vorherigen Bildschirm, wenn er zurückdrückt, aber schließen sie nur, wenn er auf dem Startbildschirm ist . –

0

Es gibt 2 Möglichkeiten für Ihr Problem lösen

1) anruf() nach startActivity (Vorsatz) in jeder Aktivität

2) android gesetzt: launchMode = "SingleInstance" in jedem Tag in menifest Datei

ich denke, 2. Weg ist am besten für die Problemlösung, aber Sie können auch erste Möglichkeit nutzen

2

Dies funktioniert in allen Versionen für mich gut. Schließen Sie alle bisherigen Aktivitäten wie folgt:

Intent intent = new Intent(this, HomeActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // this will clear all the stack 
intent.putExtra("Exit me", true); 
startActivity(intent); 
finish(); 

dann in HomeActivity onCreate() -Methode dieses Add die MainActivity für mich

setContentView(R.layout.main_layout); 

if(getIntent().getBooleanExtra("Exit me", false)){ 
    finish(); 
    return; // add this to prevent from doing unnecessary stuffs 
} 
10

Das funktioniert gut zu beenden.

  • Sie sollten FLAG_ACTIVITY_CLEAR_TASK und FLAG_ACTIVITY_NEW_TASK Flags verwenden.

    Intent intent = new Intent(SecondActivity.this, CloseActivity.class); 
    //Clear all activities and start new task 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 
    
  • onCreate() Methode der CloseActivity Aktivität.

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        finish(); // Exit 
    } 
    
+0

intent.setFlags (Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); hat für mich gearbeitet. –

0
public void onBackPressed() { 
    super.onBackPressed(); 
    finishAffinity(); 
    System.exit(0); 
} 

diese Methode sein kann, ist eine bessere Nutzung aller Aktivitäten und sauber Gerätespeicher zu schließen.

0

alle Aktivitäten zu löschen, während neue zu öffnen dann wie folgt vor:

Intent intent = new Intent(getApplicationContext(), YourActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
0

Irgendwann finish() gearbeitet haben, diese Frage nicht

ich gelöst mit

finishAffinity()

Do not Verwenden Sie

System.exit(0); 

Es wird App ohne Annimierung beenden.

Verwandte Themen