Подтвердить что ты не робот

Понимание того, какая активность начинается в Android-приложении

Мне непонятно, как Android определяет, какая активность начинается с момента запуска приложения. В документации к Android говорится следующее о файле AndroidManifest.xml о Activities:

"Только одно действие должно иметь" основное "действие и категорию" пусковая установка "..."

Итак, в файле AndroidManifest.xml у вас должно быть только одно:

action android: name= "android.intent.action.MAIN"

категория android: name= "android.intent.category.DEFAULT"

Однако, глядя на пример кода из Android SDK, приложение под названием "APIDemos" содержит файл манифеста с тоннами

"android.intent.action.MAIN" и "Android.intent.category.DEFAULT"

Я совершенно смущен. Это, похоже, противоречит тому, что Google заявляет о том, что есть только предположение. Удерживает ли Android просто тот, который появляется первым в манифесте, и игнорирует все остальные? Если нет, то почему существует несколько MAIN и DEFAULT?

4b9b3361

Ответ 1

Действия очень часто должны поддерживать CATEGORY_DEFAULT, чтобы они могли быть найдены Context.startActivity(). Таким образом, CATEGORY_DEFAULT может появляться несколько раз.

Android не захватывает тот, который появляется первым в манифесте, но начинается с активности, имеющей CATEGORY_LAUNCHER.

CATEGORY_LAUNCHER: активность может быть начальным действием задачи и указана в панели запуска приложений верхнего уровня.

Подробнее см. http://developer.android.com/guide/topics/intents/intents-filters.html

Ответ 2

Я совершенно смущен. Это, похоже, противоречит тому, что Google заявляет о том, что есть только предположение, что оно будет одним из них.

Это не противоречит. Эти действия имеют категорию CATEGORY_DEFAULT, но не CATEGORY_LAUNCHER.

Ответ 3

action.MAIN и category.LAUNCHER - это те, которые используются для указания того, какая активность запускается, когда пользователь нажимает значок вашего приложения или выбирает его из запущенного списка приложений.

Вы можете использовать другие комбинации действий и category.DEFAULT для ответа на различные события, но комбинация action.MAIN и category.LAUNCHER следует определять только один раз.