Przeczytałem kilka postów na temat korzystania z tego, ale chyba czegoś brakuje, ponieważ nie działa dla mnie. Moje działanie A ma launchmode = "singleTop" w manifeście. Rozpoczyna czynność B z launchmode = "singleInstance". Działanie B otwiera przeglądarkę i odbiera i zwraca z powrotem, dlatego jest to singleInstance. Próbuję zastąpić przycisk Wstecz, aby użytkownik został odesłany z powrotem do działania A, a następnie mógł nacisnąć przycisk Wstecz, aby opuścić działanie, zamiast wracać do działania B.
// 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;
}
Po powrocie z przeglądarki stos to ... A, B, Browser, B
Oczekuję, że ten kod zmieni stos na ... A ... tak, że ponowne naciśnięcie przeniesie użytkownika z powrotem do ekranu głównego.
Zamiast tego wydaje się, że zmienia stos na ... A, B, Browser, B, A ... tak, jakby tych flag nie było.
Próbowałem wywołać finish () w działaniu B po startActivity, ale potem przycisk Wstecz przenosi mnie z powrotem do przeglądarki!
czego mi brakuje? Dziękuję Ci!
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP
wystarczy.