Ich habe mehrere Beiträge darüber gelesen, muss aber etwas vermissen, da es bei mir nicht funktioniert. Meine Aktivität A hat im Manifest den Startmodus = "singleTop". Es startet Aktivität B mit launchmode = "singleInstance". Aktivität B öffnet einen Browser und empfängt und beabsichtigt zurück, weshalb es sich um singleInstance handelt. Ich versuche, die Zurück-Schaltfläche zu überschreiben, damit der Benutzer zur Aktivität A zurückgeschickt wird, und kann dann Zurück drücken, um die Aktivität zu verlassen, anstatt wieder zur Aktivität B zurückzukehren.
// activity B
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) onBackPressed();
return super.onKeyDown(keyCode, event);
}
@Override
public void onBackPressed() {
startActivity(new Intent(this, UI.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));
return;
}
Nach der Rückkehr vom Browser lautet der Stapel ... A, B, Browser, B.
Ich erwarte, dass dieser Code den Stapel in ... A ... ändert, sodass der Benutzer durch erneutes Drücken zurück zum Startbildschirm zurückkehrt.
Stattdessen scheint es den Stapel in ... A, B, Browser, B, A ... zu ändern, als ob diese Flags nicht da wären.
Ich habe versucht, finish () in Aktivität B nach startActivity aufzurufen, aber dann bringt mich die Zurück-Schaltfläche wieder zurück zum Browser!
Was vermisse ich? Vielen Dank!
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP
wird genau das tun.