Как завершить все действия в стеке, кроме первого в Android
Я портирую приложение для iPhone на Android и, похоже, не могу найти средства для добавления каждого действия в стек, кроме корневого.
В объективе-c я бы сделал что-то вроде ниже
[navController popToRootViewControllerAnimated:YES];
Кто-нибудь знает, могу ли я эффективно вызывать "finish()" для каждого действия после некоторого действия?
2 ответа
Если вы хотите запустить одно действие, скажем, домашний экран, и удалить все остальные действия из стека вашего приложения, вы можете использовать:
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // Removes other Activities from stack
startActivity(intent);
Если вы также хотите предоставить это событие в MainActivity (например, щелчок логотипа в строке заголовка), вы можете добавить FLAG_ACTIVITY_SINGLE_TOP
флаг, чтобы убедиться, что он не добавляет другой экземпляр себя в стек.
Посмотрите на http://developer.android.com/reference/android/content/Intent.html: вы можете запустить действие с активностью root с этим флагом, и он сместит все действия над ним. Вам следует внимательно прочитать документы о поведении при доставке.