Frage

Ich weiß, dass es schon ein paar Beiträge zu meiner Frage gab, aber ich kann keinen mit der richtigen Antwort finden.

Wenn nach meinem Verständnis der launchMode Ihrer Hauptaktivität (nennen wir sie A) auf singleTask eingestellt ist und A Aktivität B initiiert hat, wird durch einen Klick auf die Home-Schaltfläche der Verlaufsstapel zerstört und ein Neustart der Anwendung führt Sie zurück zu A und nicht B.

Ich habe launchMode auf singleTask eingestellt, weil ich eine dauerhafte Benachrichtigung habe und nicht möchte, dass mehrere Instanzen der Hauptaktivität angezeigt werden, wenn der Benutzer auf die Benachrichtigung klickt.

Fehlt mir etwas, das es mir ermöglichen würde, beides zu berücksichtigen?

Daher frage ich mich, ob es eine Möglichkeit gibt, sicherzustellen, dass der Benutzer, wann immer er die App starten möchte, unabhängig von der Benachrichtigung, zur letzten (aktuellen) Aktivität zurückkehrt.

Wenn ich launchMode in singleTop ändere, funktioniert es, aber ich erhalte bei jedem Start mehrere Instanzen der Hauptaktivität.

Danke

Andreas

War es hilfreich?

Lösung

Haben Sie versucht, launchMode für alle Aktivitäten in Ihrer App auf singleTop zu setzen?Denn was ich aus Ihrer Anfrage erhalte, ist, dass die Hauptaktivität nicht „singleTop“ ist, was dazu führen könnte, dass eine andere Instanz der Hauptaktivität aufgerufen wird, sobald die Hauptaktivität von der Aktivität gestartet wird, die von der Benachrichtigungsaktivität gestartet wurde.

Oder Sie können den launchMode als Attribut für das Anwendungs-Tag selbst im Manifest angeben.

Andere Tipps

Ich verwende den folgenden Code, um mehrere Instanzen der Aktivität zu vermeiden

Intent intent=new Intent(this,RICO.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0);

Das Ändern des Manifests sieht mir nicht angemessen aus

Ich habe Probleme mit beiden Angehörigen. Die Benachrichtigung funktioniert nur in dieser Bedingung einwandfrei: - Verwenden der Rückschaltfläche in der Hauptaktivität (wobei der Verlauf nur die Aktivität enthält) - nicht die Home -Taste verwenden - nicht die Benachrichtigung verwenden, wenn die Aktivität, die Sie aufrufen, oben und aktiv ist

In jedem anderen Fall kann die Benachrichtigung die Aktivität nicht mehr im Vordergrund aufrufen, indem "neue Absichten (...)" verwendet werden.

Ich habe die alchemische Kombination aus Manifestoptionen und Absichten gefunden, um das zu bekommen, was ich brauchte:

Intent intent= new Intent(this, YaampActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

Verwenden dieser Optionen

android:launchMode="singleTask"
android:taskAffinity=""
android:excludeFromRecents="true"

im Element.

Jetzt habe ich eine Benachrichtigung, die die Hauptaktivität hervorbringt (wenn diese Aktivität noch nicht im Vordergrund steht) und ihr Verhalten korrekt ist, wenn die Aktivität durch Drücken der Home -Taste und/oder der hinteren "geschlossen" ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top