Android запускает новое действие при очистке других

#android #android-activity #stack #task #back

#Android #android-активность #стек #задача #Назад

Вопрос:

У меня есть серия действий A, B, C, по завершении которых необходимо перенести новое действие Y в мое домашнее действие. Стек задач должен выглядеть следующим образом.

  • H
  • H-> A
  • H-> A-> B
  • H-> A-> B-> C
  • H->Y

Мне нужна кнопка «Назад», чтобы иметь возможность перейти от C обратно к B или B обратно к A, но тогда C «готово», мне нужно, чтобы Y был активной задачей. И «назад» из Y нужно вернуться домой (H).

Спасибо.

Ответ №1:

Вы могли бы запустить for activty H с флагом FLAG_ACTIVITY_CLEAR_TOP . Это вызовет onNewIntent() метод activity H. вы могли бы установить соответствующие дополнения в этом намерении и использовать их для запуска Activity Y

Комментарии:

1. Я думаю, что это был бы «правильный» способ сделать это, и я мог бы попробовать это, когда моральное возмущение от метода EboMikes снизится. Тем не менее, было 4 часа утра, и его идея сработала, так что, возможно, придется подождать до утра =)

Ответ №2:

Джейми, сейчас занимаешься Android-вещами? Какая страшная мысль! В любом случае, finish() это ваш друг, когда дело доходит до удаления действий из стека. Вы можете вызвать его несколько раз, чтобы извлечь несколько действий из стека.

В качестве альтернативы, вы также можете стереть весь стек, передав флаг FLAG_ACTIVITY_CLEAR_TOP в своем намерении (но звучит так, как будто вы хотите сохранить H , так что это может быть неразумным выбором).

Кстати, одна вещь, с которой я не играл, — это FLAG_ACTIVITY_NEW_TASK, но это может сработать в вашем случае. Передайте его перед запуском A . В вашем случае это может быть совершенно бесполезно, поэтому просто немного поэкспериментируйте с ним.

РЕДАКТИРОВАТЬ: немного поиграл с этим, вызов finish () несколько раз на самом деле работает не так, как ожидалось. Я заставил его работать, начав H с FLAG_ACTIVITY_CLEAR_TOP, а затем Y сразу после этого (т. е. два startActivity вызова в одной функции).

Комментарии:

1. Но как мне получить A и B? getParent() имеет значение null для C. Возможно, B и C должны быть дочерними действиями? Я думал о том, чтобы оставить глобальные ссылки на A и B, но затем моя левая рука схватила карандаш и ударила мою правую руку. Кроме того, у меня сейчас кровотечение. (Привет! Да, я занимаюсь Android-вещами, хотя мой бедный droid, который я получил в прошлом году, в основном не использовался. Много разработки для iOS, не так много droid.)