Как очистить весь задний стек (и возможное решение) - PullRequest
0 голосов
/ 19 марта 2012

У меня есть три вида деятельности A, B и C.
А является основным видом деятельности моего приложения.
A и C также могут быть запущены из меню параметров, B запускается из A.
Я хотел бы следующее поведение:

  1. приложение запускается с A: задний стек {A}
  2. от A, я перехожу к B: задний стек {A, B}
  3. из меню параметров я запускаю C: задний стек {C}

1 и 2 тривиальны, но мне не удается заставить 3 работать.

Я пробовал довольно много комбинаций FLAG_ACTIVITY, но безуспешно
и у меня создается впечатление, что это невозможно.

Я думаю о создании действия DummyRoot, которое просто используется для запуска другого действия (фактическое имя действия для запуска передается в Intent.getExtras ()). Я могу дать этому действию DummyRoot FLAG_ACTIVITY_CLEAR_TOP.
При этом я бы получил

  1. приложение запускается с DummyRoot (A): задний стек равен {DummyRoot, A}
  2. от A, я перехожу к B: задний стек {DummyRoot, A, B}
  3. из меню параметров я запускаю DummyRoot (C): задний стек {DummyRoot, C}

Предвидите ли вы проблемы с этим подходом? Во-первых, нужно ли это или можно более элегантно очистить задний стек?

1 Ответ

0 голосов
/ 19 марта 2012

Итак, когда вы нажимаете обратно в C, вы хотите закрыть приложение?Если это так, вам нужно будет использовать флаги в манифесте и при запуске действия с помощью намерения.Комбинация здесь позволит вам очистить текущее задание, а затем начать новое с новым заданием в нем.Это не похоже на действительный UX, но должно сработать.Пожалуйста, ознакомьтесь с ФЛАГАМИ в документации для получения дополнительной информации о том, что они на самом деле будут делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...