Ich möchte wissen, ob der Benutzer zum Startbildschirm zurückkehren würde, wenn er die aktuelle Aktivität beendet.
android
android-activity
lifecycle
virsir
quelle
quelle
Antworten:
UPDATE (Juli 2015):
Da getRunningTasks () veraltet erhalten, von API 21 ist es besser , folgen raukodraug Antwort oder Ed Burnette einen (I zweite würde es vorziehen).
Es besteht die Möglichkeit, aktuelle Aufgaben und deren Stapel mit ActivityManager zu überprüfen .
Um festzustellen, ob eine Aktivität die letzte ist:
Verwenden Sie den folgenden Code:
Bitte beachten Sie, dass der obige Code nur gültig ist, wenn Sie eine einzelne Aufgabe haben. Wenn die Möglichkeit besteht, dass für Ihre Anwendung eine Reihe von Aufgaben vorhanden sind, müssen Sie andere taskList- Elemente überprüfen . Lesen Sie mehr über Aufgaben Aufgaben und Back Stack
quelle
isTaskRoot()
Methode richtig machen .Ich werde den Kommentar von @ H9kDroid als beste Antwort hier für Leute veröffentlichen, die eine ähnliche Frage haben.
Mit isTaskRoot () können Sie feststellen , ob die Aktivität die Wurzel einer Aufgabe ist.
ich hoffe das hilft
quelle
if (isTaskRoot()) { // do something }
Hoffe, dies wird neuen Anfängern helfen. Basierend auf den obigen Antworten, die für mich gut funktionieren, teile ich auch Code-Snippets, damit es einfach zu implementieren ist.
Lösung: Ich habe verwendet,
isTaskRoot()
die true zurückgeben, wenn die aktuelle Aktivität nur eine Aktivität in Ihrem Stapel ist, und außer ich behandle auch den Fall, dass, wenn ich eine Aktivität im Stapel habe, zur letzten Aktivität im Stapel gehe, anstatt eine neue benutzerdefinierte zu öffnen .In Ihrer Tätigkeit
quelle
Es gibt eine einfachste Lösung dafür. Sie können isTaskRoot () in Ihrer Aktivität verwenden
quelle
Es gibt zwar einen Weg, dies zu erreichen (siehe andere Antworten), aber ich würde vorschlagen, dass Sie das nicht tun sollten. Normale Android-Anwendungen sollten nicht wissen müssen, ob der Startbildschirm angezeigt wird oder nicht.
Wenn Sie versuchen, Daten zu speichern, fügen Sie den Datenspeichercode in Ihre onPause () -Methode ein. Wenn Sie versuchen, dem Benutzer eine Möglichkeit zu geben, seine Meinung über das Vorhandensein der Anwendung zu ändern, können Sie den Schlüssel für die Zurück-Taste und die onBackPressed () -Methode nach oben / unten abfangen und ihm ein "Sind Sie sicher?" prompt.
quelle
Eine Möglichkeit, dies zu verfolgen, besteht darin, beim Starten einer neuen Aktivität einen Marker einzuschließen und zu überprüfen, ob der Marker vorhanden ist.
Wenn Sie eine neue Aktivität starten, fügen Sie den Marker ein:
Und Sie können dann so prüfen:
quelle
Das Problem bei der Verwendung der Lösung von sandrstar
ActivityManager
lautet: Sie benötigen eine Berechtigung, um die Aufgaben auf diese Weise abzurufen . Ich habe einen besseren Weg gefunden:Der
Activity
untere Stapel sollte diese Kategorie standardmäßig erhalten, während andere Aktivitäten sie nicht erhalten sollten.Aber selbst wenn dies auf einigen Geräten fehlschlägt, können Sie es einstellen, während Sie Folgendes starten
Activity
:quelle
Ich habe für alle meine Aktivitäten eine Basisklasse erstellt, die AppCompatActivity erweitert und über einen statischen Zähler verfügt:
Dies hat bisher gut genug funktioniert; und unabhängig von der API-Version. Es erfordert natürlich, dass alle Aktivitäten diese Basisklasse erweitern - was sie in meinem Fall tun.
Bearbeiten: Ich habe eine Instanz bemerkt, bei der der Zähler auf Null sinkt, bevor die App vollständig beendet wird. In diesem Fall wird die Ausrichtung geändert und nur eine Aktivität ist geöffnet. Wenn sich die Ausrichtung ändert, wird die Aktivität geschlossen und eine andere erstellt. Dies
onDestroyed
wird für die letzte AktivitätonCreate
aufgerufen und wird dann aufgerufen, wenn dieselbe Aktivität mit der geänderten Ausrichtung erstellt wird. Dieses Verhalten muss berücksichtigt werden. OrientationEventListener könnte möglicherweise verwendet werden.quelle
Android Geräte ein Activity - Stack, ich schlage vor , Sie darüber zu lesen hier . Es sieht so aus, als ob Sie nur die aufrufende Aktivität abrufen möchten :
getCallingActivity()
. Wenn die aktuelle Aktivität die erste Aktivität in Ihrer Anwendung ist und die Anwendung über den Startbildschirm gestartet wurde, sollte sie (ich nehme an) zurückkehrennull
.quelle
Das einzige, was hier übersehen wurde, ist der Klick auf die "Home-Taste". Wenn diese Option aktiviert ist, können Sie dies nicht an Ihrer Aktivität erkennen. Daher ist es besser, den Aktivitätsstapel programmgesteuert zu steuern, indem Sie die Taste "Zurück" drücken und zur gewünschten Aktivität wechseln oder nur die notwendigen Schritte machen.
Darüber hinaus können Sie nicht sicher sein, ob das Starten Ihrer Aktivität aus der Liste "Letzte Aktivität" erkannt werden kann, indem einige zusätzliche Daten in die Absicht zum Öffnen der Aktivität voreingestellt werden, da diese in diesem Fall wiederverwendet werden.
quelle