Привет (мой первый вопрос здесь; -)
Возможно, есть похожие вопросы, но ни один из них, похоже, не отвечает на мой вопрос или не дает мне реального решения ...
Проблема
A
(root) запускается B
.B
может начать другие действия.A
решает закрыть стек (потеря сетевого подключения) и запустить C
.Похоже, что это радикальное решение, но пользователь может ожидать этого, и это действительно имеет смысл в этом случае ...
Вопрос
Как это сделать?Я ожидал бы использовать определенный флаг или просто назвать что-то вроде dismissStack
.Но я не могу найти решение right (см. Исследование ниже).
Research
Я прочитал много документации, но доступные флаги не даютсоответствовать моим потребностям (или я не правильно понял).Другие ответы там говорят мне помнить начатые действия (например, в массиве) и заканчивать их при необходимости.Но это кажется мне грязным, и почему-то я не могу принять это как правильное решение.Надеюсь, что-то должно быть чище?!
(Хранение стека кажется мне даже неправильным. Ваше приложение может быть убито системой, поэтому ваши статические данные, но ваша история будут загружены снова при запуске.сохранить сохраненный стек. Это становится еще грязнее ...)
Обновление
Мой код и то, что я пробовал (абстрагировано):
// in A
startActivityForResult(new Intent(this, B.class), REQUEST_B);
// network fail in A
// setting any flags on C has no influence
startActivityForResult(new Intent(this, C.class), REQUEST_C);
( FLAG_ACTIVITY_CLEAR_TOP не является решением, пожалуйста, прочитайте документацию ...)
Я нажимаю Назад на C
, и B
все еще появляется и остается неподвижнымтам ...
Я могу удалить активность, позвонив по номеру finishActivity(REQUEST_B)
.Но когда B
начал другое действие D
, оно все равно всплывет, если я нажму Back на C
позже.B
ушел, но D
все еще там ...
Я уверен, что есть кое-что, что я еще не понял или просто пропустил.Может ли кто-нибудь дать мне подсказку или одобрить мое исследование, если оно действительно будет таким ...