Мы используем файлы cookie
Мы используем файлы cookie для улучшения работы сайта и предоставления вам персонализированного опыта. Правила использования файлов cookie можно найти в нашей политике конфиденциальности
Существует несколько подходов:
Использование флагов в Intent:
FLAG_ACTIVITY_SINGLE_TOP
: Если активность уже находится в топе стека, то вместо создания нового экземпляра будет вызван метод onNewIntent()
.FLAG_ACTIVITY_CLEAR_TOP
: Если активность уже существует в стеке, все активности над ней будут завершены, и она будет приведена к топовой позиции.FLAG_ACTIVITY_NEW_TASK
: Часто используется с CLEAR_TOP
для работы с активностями из другой задачи.Настройка launchMode
в AndroidManifest.xml:
singleTop
: Аналогично FLAG_ACTIVITY_SINGLE_TOP
при запуске через Intent
.singleTask
: Активность является корнем новой задачи; если экземпляр уже существует в какой-либо задаче, она будет переведена вперед, и все активности над ней будут завершены.singleInstance
: Активность существует в собственной задаче и является единственной активностью в этой задаче.Проверка существования активности перед запуском:
ActivityManager
для проверки текущего стека активностей. Этот подход менее предпочтителен из-за сложности и накладных расходов.Реакция на onNewIntent()
:
singleTop
или FLAG_ACTIVITY_SINGLE_TOP
, вся логика обработки deeplink должна быть реализована в методе onNewIntent()
, а не в onCreate()
. Не забудьте вызвать setIntent(intent)
внутри onNewIntent()
для обновления Intenta, доступного через getIntent()
.Пример использования launchMode="singleTop"
и onNewIntent()
:
В AndroidManifest.xml
:
xml
Существует несколько подходов:
Использование флагов в Intent:
FLAG_ACTIVITY_SINGLE_TOP
: Если активность уже находится в топе стека, то вместо создания нового экземпляра будет вызван метод onNewIntent()
.FLAG_ACTIVITY_CLEAR_TOP
: Если активность уже существует в стеке, все активности над ней будут завершены, и она будет приведена к топовой позиции.FLAG_ACTIVITY_NEW_TASK
: Часто используется с CLEAR_TOP
для работы с активностями из другой задачи.Настройка launchMode
в AndroidManifest.xml:
singleTop
: Аналогично FLAG_ACTIVITY_SINGLE_TOP
при запуске через Intent
.singleTask
: Активность является корнем новой задачи; если экземпляр уже существует в какой-либо задаче, она будет переведена вперед, и все активности над ней будут завершены.singleInstance
: Активность существует в собственной задаче и является единственной активностью в этой задаче.Проверка существования активности перед запуском:
ActivityManager
для проверки текущего стека активностей. Этот подход менее предпочтителен из-за сложности и накладных расходов.Реакция на onNewIntent()
:
singleTop
или FLAG_ACTIVITY_SINGLE_TOP
, вся логика обработки deeplink должна быть реализована в методе onNewIntent()
, а не в onCreate()
. Не забудьте вызвать setIntent(intent)
внутри onNewIntent()
для обновления Intenta, доступного через getIntent()
.Пример использования launchMode="singleTop"
и onNewIntent()
:
В AndroidManifest.xml
:
xml
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.