Я понял ваш вопрос из вашего комментария, который вы ответили Тиму.Итак, вы хотите знать различия в поведении
при настройке launchModes и при настройке флагов Intent для активности
Ответ на этот вопрос заключается в том, что вы установили launchMode
дляActivity
внутри файла AndroiManifest.xml, но конкретное поведение при запуске может быть изменено некоторыми способами при времени выполнения с помощью Intent
флагов FLAG_ACTIVITY_SINGLE_TOP
, FLAG_ACTIVITY_NEW_TASK
, FLAG_ACTIVITY_MULTIPLE_TASK
и т. Д.
Теперь давайте перейдем к еще двум вашим вопросам, которые вы упомянули в своем основном вопросе.
В чем разница между использованием флага намерений "FLAG_ACTIVITY_NEW_TASK" и "FLAG_ACTIVITY_CLEAR_TOP" и launchMode = "singleTask"?
FLAG_ACTIVITY_NEW_TASK
Когда мы устанавливаем этот флаг посредством намерения и запускаем это действие.В этом случае это действие станет началом новой задачи в этом стеке истории.Задача (от действия, которое ее запустило, до следующего действия задачи) определяет элементарную группу действий, в которую пользователь может перейти.Это означает, что он создаст отдельный стек истории.Например, в вашем приложении у вас есть значок настройки, когда вы нажимаете на него и переходите к настройке активности, где у вас есть дальнейшие действия.Здесь все записанные действия будут начинаться только с заданного вами действия настройки.
FLAG_ACTIVITY_CLEAR_TOP
Как видно из названия, если вы запустите действие с этим флагом в существующем задача (пожалуйста, поймите задачу, тогда все будет очень легко понять), в этом случае все действия в стеке над этим действием будут закрыты, и это станет последним или самым старым действием в Задаче.
singleTask
Когда вы запускаете действие переменного тока, для которого вы установили lanuchMode = "singleTask"
, и уже выполняется задача, которая запускается с этим действием, тогда вместо запуска нового экземпляратекущее задание перенесено на передний план.
Ваш второй вопрос
В чем разница при установке флага намерения в качестве FLAG_ACTIVITY_SINGLE_TOP и установки для launchMode значения "singleTop"?
FLAG_ACTIVITY_SINGLE_TOP и lanuchMode = "singleTop"
Оба имеют одинаковый бехavior, флаг устанавливается во время выполнения и launchMode в AndroidManifest.xml в начале.Поведение таково, что действие с этим будет единственным действием сверху в Задаче.Если он уже выполняется в верхней части стека истории, то действие больше не будет запускаться.
ПРИМЕЧАНИЕ. Лучший способ понять поведение - это следовать любому учебнику и проверять его практически.Поиграйте с кодом и посмотрите поведение.
Вот несколько полезных ссылок:
Режимы запуска: https://developer.android.com/reference/android/R.styleable#AndroidManifestActivity_launchMode
Флаги намерений: https://developer.android.com/reference/android/content/Intent