В чем разница между использованием флага Intent "CLEAR_TOP" и launchMode = "singleTask"? - PullRequest
0 голосов
/ 11 мая 2018

В чем разница между использованием Intent flag "FLAG_ACTIVITY_NEW_TASK" & "FLAG_ACTIVITY_CLEAR_TOP" и launchMode="singleTask"?и Какая разница в установке флага намерения как FLAG_ACTIVITY_SINGLE_TOP и установке launchMode в "singleTop".

Ответы [ 3 ]

0 голосов
/ 21 мая 2018

Я понял ваш вопрос из вашего комментария, который вы ответили Тиму.Итак, вы хотите знать различия в поведении

при настройке 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

0 голосов
/ 26 мая 2018

singleTask: - В Activity с singleTask launchMode разрешено иметь только один экземпляр в системе (a.k.a. Singleton). Если в системе существует существующий экземпляр Activity, весь объект Task, удерживающий экземпляр, будет перемещен в верхнюю часть, а Intent будет доставлен через метод onNewIntent (). В противном случае, новая активность будет создана и помещена в соответствующую задачу. Вы можете получить больше информации с помощью ниже URL: - https://inthecheesefactory.com/blog/understand-android-activity-launchmode/en

flag - FLAG_ACTIVITY_CLEAR_TOP: Если запускаемое действие уже выполняется в текущей задаче, то вместо запуска нового экземпляра этого действия все остальные действия над ним уничтожаются (с вызовом метода onDestroy) и это намерение доставляется возобновленному экземпляру Activity (теперь сверху) через метод onNewIntent. Примечание. Для FLAG_ACTIVITY_CLEAR_TOP, если launchMode не определен в AndroidManifest или не задан как «стандартный» для Activity, тогда Activity вместе с его вершиной выталкивается, а новый экземпляр этой Activity помещается на вершину. Таким образом, метод onNewIntent не вызывается.

Это нежелательно, большую часть времени мы хотели бы повторно использовать Activity и обновлять ее состояния просмотра, такие как данные в списке, когда дело доходит до вершины заднего стека, а не уничтожать и затем заново создавать его.

Вы можете получить больше информации с помощью ниже URL: - https://blog.mindorks.com/android-task-and-back-stack-review-5017f2c18196

0 голосов
/ 20 мая 2018

Я думаю, что документация Android https://developer.android.com/reference/android/content/Intent#FLAG_ACTIVITY_CLEAR_TOP из FLAG_ACTIVITY_CLEAR_TOP объясняет разницу довольно хорошо. Режимы запуска довольно хорошо объяснены на https://inthecheesefactory.com/blog/understand-android-activity-launchmode/en.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...