Мне нужно вызвать активность с различными launchMode
согласно состоянию моего приложения. В одном случае это должно быть singleInstance
, в другом - singleTask
. Я знаю, как установить launchMode
в AndroidManifest, но так как это должно быть динамическое свойство, я должен сделать это из кода. Я подумал, что перед запуском деятельности я могу добавить определенный флаг к намерению, но я нашел только флаг singleTop
. Так какой-то способ решить эту проблему? СпасибоПрограммный режим запуска активности
ответ
После некоторых расследований я заметил, что это невозможно сделать таким образом. Но хорошей новостью является то, что у меня есть обходное решение:
Вам нужно создать два Activities
, каждый с соответствующими launchModes. Один Activity
реально Activity
с кодом внутри, а другой будет просто назвать основным Activity
в onCreate()
метод, но, так как он будет нужен launchMode, главный Activity
будет запущен с этим режимом. Не очень приятное, но полностью работающее решение.
После этого, вместо того, чтобы пытаться открыть ваши Activity
с намерением флагов, положить в намерении class
в Activity
согласно launchMode вам нужно.
Просто создать два вида деятельности A и B, B расширяет А. В манифесте объявляют launchMode = «singleTask» для А, а launchMode = «SingleInstance» для B. и начать деятельность в соответствии с launchMode вам нужно.
В моем случае мне нужно две разные launchMode, связанные с различным андроида уровня API: в AndroidManifest
android:launchMode="@integer/launchModeAPIlevel"
и другое значение числа внутри папки значений-18, значения-21
<integer name="launchModeAPIlevel">1</integer>
launchmode 1 == singleTop singleTask == 2