#android #android-activity
#Android #android-активность
Вопрос:
Действие «A» отображает основную сущность apps, которая является продуктом. Из действия «A» вы можете открывать дочерние действия, такие как:
- Действие F — История заказов на продукты
- Действие G — Обзоры продуктов
- Действие H — Похожие продукты
Нам всегда нужен только один экземпляр действия продукта в заднем стеке.
Я знаю, что могу использовать флаги намерений FLAG_ACTIVITY_CLEAR_TOP
и FLAG_ACTIVITY_NEW_TASK
при открытии экземпляра «A», и Android будет искать предыдущий экземпляр «A», и если он найден, «все другие действия поверх него будут закрыты», и этот экземпляр «A» будет использоваться. Таким образом, мы поддерживаем только 1 экземпляр «A» в заднем стеке. Это работает хорошо и означает, что A и любые дочерние действия, такие как F, G и H, закрыты.
Проблема в том, что иногда мы можем открыть действие по поиску продукта из действия «A». Логически это не дочерний элемент «A».
Есть ли способ сообщить Android, что действие по поиску продукта не должно быть закрыто с помощью комбинации FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_NEW_TASK
?
Комментарии:
1. почему бы не передавать целочисленные значения в качестве дополнительных и не выполнять определенные действия вручную в соответствии с целочисленными значениями?
2. дополнительные действия, такие как?
3. Нет способа сделать это в рамках одной задачи. Это также не имело бы никакого смысла. Стек задач — это стек действий. Если A запускает ZZ (который не является дочерним элементом A), какое действие затем запускается (поверх ZZ), которое хочет вернуться к A и удалить все его дочерние элементы? Если ZZ находится поверх A, то для возврата к A. Потребуется очистить ZZ. Ваша навигация звучит некорректно. Либо это, либо вы хотите 2 отдельные задачи (которые вы можете выполнить, но это требует большего соответствия). Пожалуйста, объясните вашу навигацию более подробно, чтобы мы могли помочь.
Ответ №1:
Вы можете поместить несвязанные действия в отдельную задачу. Просто установите taskAffinity=""
в <activity>
объявлении в манифесте для этих действий и убедитесь, что вы указываете Intent.FLAG_ACTIVITY_NEW_TASK
в любом Intent
, которое вы используете для запуска этих действий.
Предупреждение: Если у вас несколько задач, вам следует рассмотреть возможность создания отдельного значка приложения для другой задачи (ов) и / или запретить отображение другой задачи (ов) в списке последних задач. В противном случае пользователь будет сбит с толку, если он покажет список недавних задач и увидит 2 из них, которые похожи на ваше приложение.
Комментарии:
1. Что такое «Список недавних задач»? Похоже ли это на список запущенных приложений?
2. Когда вы долго нажимаете кнопку «Домой» или используете кнопку «недавние задачи» (на разных устройствах это разные аппаратные кнопки), отображается «список последних задач».