2015-04-26 2 views
3

У меня есть Activity с launchmode = "singleInstance" и это пусковая установка Activity приложения. Теперь я пытаюсь обнаружить, какой Flag был запущен/запущен Activity, но я не могу найти идентификатор флага с IntentFlag s на documented page; это флагНеизвестный намерение Флаг на Launcher Activity

String version of the Flag id is 270532608 

и Струнный версия Intent является

04-25 20:18:57.061: V/logtag(1665): Intent { act=android.intent.action.MAIN 
     cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=<filtered> } 

, когда приложение запускается впервые, система вызывает мой Activity с этим Flag = Intent.FLAG_ACTIVITY_NEW_TASK или струнной версии = 268435456 (который должен), но когда я выхожу из приложения и снова запускаю его из пусковой установки, я получаю этот флаг 0x10200000 вместо предыдущего флага.

так что мой вопрос может кто-нибудь сказать мне, что это за флаг?

и почему моя деятельность называется с ней?

и есть ли какие-либо другие экземпляры из пусковой установки, что моя деятельность может быть запущена с другим флагом в стороне от неизвестного & 0x10200000?

ответ

6

Это сочетание флагов:

public static final int FLAG_ACTIVITY_NEW_TASK = 0x10000000; 

и

public static final int FLAG_ACTIVITY_RESET_TASK_IF_NEEDED = 0x00200000; 

0x10000000 является шестнадцатиричной для 268435456.
0x00200000 является шестнадцатиричной для 2097152.
Если добавить эти цифры, вы получите:
0x10200000, который является шестнадцатиричной для 270532608.

Итак, при первом запуске приложения вы получаете только FLAG_ACTIVITY_NEW_TASK, но во второй раз вы также получите FLAG_ACTIVITY_RESET_TASK_IF_NEEDED. Это просто побитовая операция ИЛИ. Чтобы проверить, если ваш желаемый флаг активен, вы можете сделать побитовое И как это:

boolean hasNewTaskFlag = (flg & FLAG_ACTIVITY_NEW_TASK) != 0; 
+0

Omg !! Сэр? если я могу спросить, знаете ли вы это по опыту или есть какой-то источник, я не сомневаюсь в вас, мне просто нужно быть проинформированным, чтобы я мог обнаружить комбинации, как вы указали? btw у вас есть мой upvote – Elltz

+0

Все флаги камеры видны в документации по адресу http://developer.android.com/reference/android/content/Intent.html – Endran

+0

Вам просто нужно выполнить побитовые операции, чтобы увидеть, какие флаги активны , – Endran

1

Прежде всего, это значение flag0x10200000 в Hexadecimal не Decimal, поэтому вы не можете найти какую-либо полезную информацию, если вы пытались Google его.

Вот почему у вас должно быть convert оно сначала до десятичного. Тогда вы увидите, что реальное flag значение 270532608 что означает начать новую задачу по сравнению с предыдущим

почему моя деятельность вызывается с ним?

Потому что вы, вероятно, возобновляете экземпляр, который был в фоновом режиме (список последних приложений). Не начинать новый экземпляр

Если вы хотите узнать больше об этом умысел флаг нажмите here

ссылка: Start new activity in window manager

+0

так, если я имел 'excludefromrececents = TRUE;' будет шанс, что я бы не получить этот флаг? Я пытаюсь поймать сценарии сэра, и это из-за права «единственного состояния»? что, если бы у меня была «синглетная маска»? но я думаю, хотя я и не обращал на это внимания, что моя деятельность с ее задачей закончилась. и быстрый улов я не искал для шестнадцатеричного числа (: просто слово, – Elltz

+0

Использование 'android: noHistory =" true "' позволит вам снова получить этот флаг, если вы вернетесь с помощью своей активности запуска и снова запустите. – TheLittleNaruto

+0

yes но на этом мероприятии я искра startActivityforResult и с этим я бы не получил свое намерение вернуться, поэтому я исключил его из своих опций @TheLittleNaruto, но спасибо Sir, – Elltz

Смежные вопросы