Я прочитав кілька постів про використання цього, але, мабуть, щось не вистачає, оскільки це не працює для мене. У моїй діяльності A у маніфесті є launchmode = "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, Browser, B
Я очікую, що цей код змінить стек на ... A ... так, що натискання назад ще раз поверне користувача назад на головний екран.
Натомість він, здається, змінює стек на ... A, B, Browser, B, A ... так, ніби цих прапорів там немає.
Я спробував викликати finish () у дії B після startActivity, але потім кнопка "Назад" знову повертає мене до браузера!
Чого мені не вистачає? Дякую!
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP
зроблю саме це.