Я намеренно знаю различные типы флагов, но не могу использовать их в своей деятельности. Кто-нибудь может мне объяснить,
- Как мы можем закончить деятельность и в качестве альтернативы?
- Как манипулировать стеком активности с помощью флагов намерений.
Я намеренно знаю различные типы флагов, но не могу использовать их в своей деятельности. Кто-нибудь может мне объяснить,
Как мы можем закончить деятельность и, альтернативно?
Чтобы закончить действие, вам нужно вызвать метод finish(), либо вручную, либо нажать кнопку возврата, которая сама вызывает метод finish().
Я думаю, вы спрашиваете о режиме запуска Android, который также может быть объявлен с использованием флагов Intent, например:
1) FLAG_ACTIVITY_NEW_TASK. Если установлено, это действие станет началом новой задачи в этом стеке истории. Задача (от активности, которая начала ее к следующей задаче задачи) определяет атомную группу действий, к которой пользователь может перейти. Задачи могут быть перенесены на передний план и фон; все действия внутри конкретной задачи всегда остаются в одном порядке.
2) FLAG_ACTIVITY_CLEAR_TOP. Если установлено, и запущенная деятельность уже запущена в текущей задаче, вместо запуска нового экземпляра этой активности все остальные действия поверх нее будет закрыт, и это намерение будет передано (теперь сверху) старой деятельности в качестве нового намерения.
3) FLAG_ACTIVITY_SINGLE_TOP. Если установлено, действие не будет запущено, если оно уже запущено в верхней части стека истории.
Дополнительная информация о Intents доступна на веб-сайте Android Developers.
Также вы можете прочитать подробное описание с примерами в этой ссылке.
Как манипулировать стеком действий с помощью флажков.
Манипуляция заднего стека зависит от вашего требования, например. если вы хотите, чтобы вы увидели определенное действие позже после запуска приложения, вы можете сохранить его в стеке стека. Также, если вы не хотите видеть определенный экран, например. всплывающий экран, который вызывается только один раз, должен быть завершен при навигации к другому экрану.
Вы можете вызвать finish()
в своей деятельности, чтобы завершить его.
Существуют флаги, которые вы можете использовать в это время в зависимости от ваших требований. Вот как они работают:
FLAG_ACTIVITY_CLEAR_TASK
- Если установлено в любом намерении, которое передается в startActivity(), это приведет к тому, что любая существующая задача будет связана с активностью, которая должна быть очищена до начала действия. То есть все старые действия завершены.
FLAG_ACTIVITY_CLEAR_TOP
- Если установлено в любом намерении, которое передается вашей startActivity(), и запущенная деятельность уже запущена в текущей задаче, то вместо запуска нового экземпляра этого действия все остальные действия он будет закрыт, и это намерение будет передано старой деятельности в качестве нового намерения.
FLAG_ACTIVITY_NEW_TASK
- Если установлено в любом намерении, которое передается вашей startActivity(), это действие станет началом новой задачи в этом стеке истории.
FLAG_ACTIVITY_SINGLE_TOP
- Если установлено в любом намерении, которое передается вашей startActivity(), активность не будет запущена, если она уже запущена в верхней части стека истории.
Вы можете использовать его следующим образом:
Intent i=new Intent(this, Sample.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
Для дальнейших разъяснений вы можете проверить этот Intents, а также Back Stack и Задачи
Если вы хотите завершить операцию, вы можете вызвать метод finish() из этой операции.
Для активности доступны различные типы флагов:
FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_SINGLE_TOP
вы можете использовать witn Intent.FLAG_ACTIVITY_NEW_TASK для любого параметра метода setFlag.
Подробнее: Задачи и обратные стеки и Activities
Надеюсь, это может вам помочь.