1

Die MainActivity in meiner App hat eine launchMode von singleTop in der Manifestdatei definiert. Wenn ich auf eine Benachrichtigung klicke, wird meine MainActivity neu erstellt und die alte Instanz wird zerstört. MainActivity ist sichtbar und im Vordergrund, wenn auf die Benachrichtigung geklickt wird, also würde ich annehmen, dass die Absicht an die onNewIntent() der aktuellen Instanz übergeben würde, aber das passiert nie. Hier ist es die Absicht, ich erstellen:Aktivität mit launchMode singleTop oder singleTask wird immer neu erstellt

Intent resultIntent = new Intent(App.getInstance(), MainActivity.class); 
TaskStackBuilder stackBuilder = TaskStackBuilder.create(App.getInstance()); 
stackBuilder.addNextIntent(resultIntent); 
PendingIntent resultPendingIntent = PendingIntent.getActivity(App.getInstance(), 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

ich manchmal die FLAG_ACTIVITY_CLEAR_TOP und FLAG_ACTIVITY_SINGLE_TOP auf die Absicht hinzufügen wie folgt:

resultIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

Ich habe auch versucht, mit dem singleTask launchMode auch mit den Fahnen und dem gleichen Verhalten ist passiert. Kann jemand etwas Einblick in dieses Verhalten geben?

Antwort

1

Sie müssen kein neues TaskStackBuilder erstellen. Versuchen Sie Absicht, die wie Sie wirken mögen die Anwendung neu starten, aber singleTop wird es verhindern, tut so:

Intent resultIntent = new Intent(App.getInstance(), MainActivity.class); 
resultIntent.setAction(Intent.ACTION_MAIN); 
resultIntent.addCategory(Intent.CATEGORY_LAUNCHER); 

PendingIntent resultPendingIntent = PendingIntent.getActivity(App.getInstance(), 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
+0

Vielen Dank, das funktionierte. Ich brauchte auch keine Flaggen, die auf die Absicht eingestellt waren. –

Verwandte Themen