как заголовок вопросов говорит - мне нужно знать, что является лучшим способом «удалить»/уничтожить/закончить действие, которое находится где-то посреди стека и в настоящее время в режиме паузы (не конкретные экземпляры, а определенные производные классы) ,Каков правильный способ очистки фоновой активности/активности из стека?
, например:
если текущее состояние стека выглядит следующим образом:
ActivityD <-- top of the stack, currently forground
ActivityC
ActivityA
ActivityC
ActivityA
запрос на «очистить» все экземпляры ActivityC бы вызвать стек быть похожим:
ActivityD <-- still top of the stack, currently forground.
ActivityA
ActivityA
Я не хочу этого делать, это зависит от режима запуска активности или флагов намерений. Я знаю, как использовать их и их преимущества.
Я знаю, что могу сказать, это отправить широковещательную рассылку, в которой все действия, необходимые для уничтожения, будут прослушиваться и вызывать Activity.finish() при получении широковещательной передачи.
Это работает, но требует регистрации ресиверов, даже когда их хостинг-активность приостановлена, и я не уверен, что метод «finish()» был вызван из приостановленной активности, это что-то право делать.
Можно ли вызвать метод Activity.finish() из возобновленной активности?
Это право регистрировать приемник в методе OnCreate() и отменить его регистрацию OnDestroy()?
Правильно ли обрабатывать широковещательную передачу от возобновленной деятельности и вызывать финал() с этой точки?
есть «Android-способ» или какой-либо API, который я не знаю, чтобы очистить действия от стека?
Заранее спасибо
вы читали мои вопросы тела? как я писал - я использую это решение на данный момент. можете ли вы сказать мне, если по какой-то причине использование этого решения не приведет к тому, что инженеры прошивки андроида поднимут глаза на использование широковещательных приемников таким образом? –
sory примерно тот. Я не правильно прочитал ур. Насколько мне известно, такого пути нет. Но, скорее всего, неправильно. Одно дело, если вы хотите, чтобы активность не была в стеке, просто запустите ее без свойства history, можно установить через код и xml оба. –
спасибо за ваш ответ, мне нужно, чтобы моя деятельность оставалась в стеке в некоторых точках, поэтому использование свойства history не является для меня вариантом. если вы хотите услышать, я могу быть более конкретным в ситуации, которая заставила меня нуждаться в этом требовании: мне нужно обрабатывать уведомление c2dm push изнутри и снаружи приложения - открывать определенные экраны в соответствии с ним и при переходе на какую-то активность - очистить все действия от «MainMenuActivity» из стека –