2016-06-29 1 views
0

Ich habe eine Anwendung, die zwei Aktivitäten implementiert. Aktivität A dient zum Auswählen einiger Dateien auf dem Gerät und Aktivität B zeigt zusätzliche Informationen an, während diese Dateien verarbeitet werden. Beide haben singleInstance als Startmodus.Wie wird die Aktivität fortgesetzt, wenn die Anwendung vom Android Launcher neu gestartet wird?

Beim Start der Anwendung wird A ausgeführt. Dann startet diese Aktivität die zweite Aktivität B, die eine Benachrichtigung erstellt. Wenn ich auf diese Benachrichtigung tippe oder eine laufende App von den letzten öffne, funktioniert es einwandfrei und zeigt die laufende Aktivität B. Aber wenn ich die Anwendung zuvor gestartet hätte und Aktivität B bereits ausgeführt wird, führt das erneute Starten aus dem App-Menü dazu, Aktivität A zu zeigen, wenn alte Aktivität B läuft bereits und ist über die Benachrichtigungsleiste erreichbar.

Also, was soll ich machen, damit die Anwendung nur eine einzelne Aktivität gleichzeitig ausführt und die zweite Aktivität anzeigt, wenn sie vom Launcher aufgerufen wird (wenn die zweite Aktivität einmal gestartet wurde und nicht beendet ist)?

+0

Meinst du, dass du Aktivität B öffnest, die App verlässt, zurückkommst und Aktivität A öffnet? Können Sie uns Ihren Quellcode zeigen, hauptsächlich wie Sie die Aktivität B von Aktivität A aufrufen, wie Sie den Benutzer benachrichtigen und wie der PendingIntent behandelt wird? –

+0

Ja, Aktivität A wird geöffnet, wenn ich die App vom Startprogramm aus öffne (z. B. Homescreen-Verknüpfung), wenn ich Aktivität B sehen muss. Um Aktivität B zu starten, mache ich nur eine Absicht, setze die Aktion als ACTION_VIEW, gebe einige Extras und Rufen Sie startActivity() auf. –

Antwort

0

Ihre Launcher-Absicht sollte einer Dummy-Aktivität ohne Sicht zugeordnet werden (oder ein Splash, der es weiß!). In onCreate dieser Dummy-Aktivität prüfen Sie, ob zuvor ein Status gespeichert wurde und basierend auf dem Statuswechsel zur gewünschten Aktivität.

Und wie man den Zustand einstellt? naja lass uns mal was einfaches probieren. sagen wir, wenn Activity A wieder aufgenommen wird, setzen wir "A" zu einem Schlüssel in SharedPreference. Wenn Activity B wieder aufgenommen wird, setzen wir "B" auf den gleichen Schlüssel in den Einstellungen. Jetzt verschwindet Ihre Anwendung, wenn Activity B sichtbar war, der gespeicherte Zustand "B" war, Sie starten vom Startbildschirm, die Dummy-Aktivität findet "B" im Zustand und die Startabsicht geht zu B, sonst gehen Sie zu A.