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