Ich habe 2 Aktivitäten: Main und List.
Über Main können Sie List öffnen. Aus der Liste können Sie Main öffnen.
Ich möchte, dass bei jedem Öffnen von List nicht in der 'History' gespeichert wird. Wenn Sie also von Main kann nicht zurück drücken, kehren Sie zur Liste zurück.
Ist es möglich?
Wenn Sie das Activity
Ihrer Liste starten, setzen Sie die Flags Intent
wie folgt:
Intent i = new Intent(...); // Your list's Intent
i.setFlags(i.getFlags() | Intent.FLAG_ACTIVITY_NO_HISTORY); // Adds the FLAG_ACTIVITY_NO_HISTORY flag
startActivity(i);
Das FLAG_ACTIVITY_NO_HISTORY
Flag verhindert, dass das neue Activity
zum Verlaufsstapel hinzugefügt wird.
NB: Wie @Sam betont, können Sie stattdessen i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
verwenden. Es gibt keinen funktionalen Unterschied.
Fügen Sie in der Manifestdatei Folgendes hinzu:
Android:noHistory="true"
auf die Aktivität, die Sie nicht auf dem Stapel behalten möchten.
Verwenden Sie die neue Aufgabe mit Löschen. Dies funktionierte in meinem Fall, als die anderen Optionen nicht taten.
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
Lösche den gesamten Verlaufsstapel und starte eine neue Aktivität auf Android
Wenn Sie bei Ihrer Aktivität direkt nach dem Öffnen einer anderen Aktivität finish () aufrufen, wird die beendete Aktivität aus dem Stapel entfernt.
beispielsweise:
Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
finish();
In meinem speziellen Fall FLAG_ACTIVITY_NO_HISTORY
funktioniert nicht. Weder hat FLAG_ACTIVITY_NEW_TASK
oder FLAG_ACTIVITY_CLEAR_TASK
alleine arbeiten.
Jedoch FLAG_ACTIVITY_NEW_TASK
und FLAG_ACTIVITY_CLEAR_TASK
zusammen hat funktioniert.
Intent intent = new Intent(FooActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
Ich wollte nur eine Möglichkeit hinzufügen, dies in Kotlin zu tun:
val i = Intent(this, LogInActivity::class.Java)
startActivity(i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK))
Verspätete Antwort, verleiht aber anderen Antworten Tiefe. Alles hängt davon ab, was mit anderen Aktivitäten geschehen soll, die von dieser Aktivität aus gestartet wurden
Option 1 - Nur diese eine Aktivität sollte keine Anrufaktivität enthalten
Dann machen Sie einfach:
Intent i = new Intent(...);
i.addFlag(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
Option 2 - Alle Aktivitäten, die von dieser bestimmten Aktivität gestartet wurden, sollten keinen Verlauf haben
Fügen Sie dann das Manifest der aufrufenden Aktivität hinzu:
Android:noHistory="true"
Wenn Sie jedoch einen Verlauf in einer neuen Aktivität haben möchten, müssen Sie die Markierung manuell entfernen:
Intent i = new Intent(...);
i.removeFlag(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
Hoffe das klärt andere Antworten :)
füge die Flagge hinzu FLAG_ACTIVITY_NEW_TASK
zu Ihrem Intent
http://developer.Android.com/reference/Android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK
Versuchen Sie FLAG_ACTIVITY_CLEAR_TOP, wenn die Aktivität bereits ausgeführt wird:
Intent intent = new Intent(this, MyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);