Я прочитал несколько сообщений об использовании этого, но должен упустить что-то, поскольку он не работает для меня. Моя активность A имеет в манифесте startmode = "singleTop". Он начинает активность B, с launchmode = "singleInstance". Активность B открывает браузер и получает и убирает назад, поэтому он singleInstance. Я пытаюсь переопределить кнопку "Назад", чтобы пользователь был отправлен обратно на операцию "А", а затем может нажать "Назад", чтобы оставить активную операцию, а не вернуться к активности В снова.
// 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;
}
После возврата из браузера стек... А, В, браузер, Б
Я ожидаю, что этот код изменит стек на... ... чтобы повторное нажатие снова вернуло пользователя на главный экран.
Вместо этого он, кажется, меняет стек на... A, B, браузер, B, A ... как будто этих флагов там нет.
Я попытался вызвать finish() в действии B после startActivity, но затем кнопка back вернет меня обратно в браузер!
Что мне не хватает? Спасибо!