Понимание того, какая активность начинается в 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?
Ответы
Ответ 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 следует определять только один раз.