Hoffentlich kann mir jemand helfen, wenn nicht sogar eine Lösung, zumindest eine Erklärung für ein Verhalten herauszufinden.
Das Problem:
Auf einigen Geräten führt das Drücken des Startsymbols dazu, dass die aktuelle Aufgabe fortgesetzt wird, auf anderen wird die anfängliche Startabsicht ausgelöst (die App wird effektiv neu gestartet). Warum passiert das?
Das Detail:
Wenn Sie auf das "Startsymbol" klicken, wird die App normal gestartet. Das heißt, ich gehe davon aus, dass eine Absicht mit dem Namen Ihres ersten Activity
mit der Aktion android.intent.action.MAIN
und der Kategorie gestartet wird android.intent.category.LAUNCHER
. Dies kann jedoch nicht immer der Fall sein:
Wenn Sie auf den meisten Geräten das Startsymbol drücken, nachdem die App bereits ausgeführt wurde, wird die aktuell ausgeführte Aktivität in diesem Prozess fortgesetzt ( NICHT die ursprüngliche Activity
). Es wird auf die gleiche Weise fortgesetzt, als hätten Sie es unter "Letzte Aufgaben" im Menü "Betriebssystem" ausgewählt. Dies ist das Verhalten, das ich auf allen Geräten möchte .
Bei ausgewählten anderen Geräten tritt jedoch ein anderes Verhalten auf:
Wenn Sie auf dem Motorola Xoom auf das Startsymbol klicken, startet die App immer den ersten Start,
Activity
unabhängig davon, was gerade ausgeführt wird. Ich gehe davon aus, dass die Launcher-Symbole immer die Absicht "LAUNCHER" starten.Wenn Sie auf dem Samsung Tab 2 auf das Startsymbol drücken und die App gerade installiert haben, wird immer die Initiale gestartet
Activity
(wie beim Xoom). Nach dem Neustart des Geräts nach der Installation wird jedoch stattdessen das Startsymbol angezeigt Setzen Sie die App fort. Ich gehe davon aus, dass diese Geräte beim Gerätestart "installierte Apps" zu einer Nachschlagetabelle hinzufügen, damit die Startsymbole die laufenden Aufgaben korrekt wieder aufnehmen können.
Ich habe viele Antworten gelesen , die meinem Problem ähnlich klingen , aber einfach das Hinzufügen android:alwaysRetainTaskState="true"
oder Verwenden launchMode="singleTop"
von Activity
sind nicht die Antwort.
Bearbeiten:
Nach dem letzten Start dieser App stellen wir fest, dass dieses Verhalten nach dem ersten Neustart auf allen Geräten auftritt . Was mir verrückt erscheint, aber wenn ich den Neustartprozess durchschaue, kann ich nicht finden, was falsch läuft.
finish()
sie in Fällen aufzurufen , in denen es das erste Activity
erneut beginnt , anstatt sie wieder aufzunehmen.