61 Stimmen

New Intent() startet neue Instanz mit Android: launchMode="singleTop"

Ich habe Aktivität A mit android:launchMode="singleTop" im Manifest.

Wenn ich zu Aktivität gehe B , C und D dort habe ich Menüverknüpfungen, um zu meinen Anwendungen zurückzukehren Wurzelaktivität ( A ).

Der Code sieht wie folgt aus:

Intent myIntent = new Intent(getBaseContext(), MainActivity.class);
startActivity(myIntent);

Anstatt jedoch zu der bereits vorhandenen Instanz zurückzukehren A meiner MainActivity.class wird eine neue Instanz erstellt -> es geht zu onCreate() anstelle von onNewIntent() .

Das ist doch nicht das erwartete Verhalten, oder?

0voto

Rachel Punkte 241

Das liegt daran, dass die ursprüngliche Aktivität A bereits zerstört ist, wenn Sie sie von B, C oder D aus starten. Daher wird onCreate anstelle von onNewIntent() aufgerufen. Eine Möglichkeit, dieses Problem zu lösen, besteht darin, die bestehende A immer zu zerstören (unter Verwendung der FLAG_ACTIVITY_CLEAR_TASK | FLAG_ACTIVITY_NEW_TASK-Konjunktion bei startActivity), bevor eine neue A gestartet wird, so dass onCreate immer aufgerufen wird, und Sie den Code von onNewIntent() in onCreate einfügen, indem Sie prüfen, ob getIntent() die Absicht ist, mit der Sie begonnen haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X