我不清楚Android如何在应用启动时确定哪个Activity首先启动。 Android文档说明了有关Activities:
的AndroidManifest.xml文件的以下内容“只有一项活动应具有”主要“操作和”启动器“类别......”
所以在AndroidManifest.xml文件中,你应该只有一个:
动作android:name =“android.intent.action.MAIN”
类别android:name =“android.intent.category.DEFAULT”
但是,在查看Android SDK中的示例代码时,名为“APIDemos”的应用程序包含一个包含大量
的清单文件“android.intent.action.MAIN”和 “android.intent.category.DEFAULT”
我完全糊涂了。这似乎与谷歌所说的相反,只是假设是一个。 Android是否只是抓住清单中首先出现的那个并忽略所有其他的?如果没有,为什么有多个MAIN和DEFAULT?
答案 0 :(得分:9)
活动通常需要支持CATEGORY_DEFAULT,以便Context.startActivity()可以找到它们。因此,CATEGORY_DEFAULT可以出现多次。
Android不会抓住清单中首先出现的那个,但它会从具有CATEGORY_LAUNCHER的活动开始。
CATEGORY_LAUNCHER:活动可以是任务的初始活动,并列在顶级应用程序启动器中。
有关详细信息,请参阅: http://developer.android.com/guide/topics/intents/intents-filters.html
答案 1 :(得分:6)
我完全糊涂了。这似乎与谷歌所说的相反,只是假设是一个。
这不是相反的。这些活动包含类别CATEGORY_DEFAULT,但不包含CATEGORY_LAUNCHER。
答案 2 :(得分:5)
action.MAIN和category.LAUNCHER用于指定当用户按下您的应用图标或从正在运行的应用列表中选择它时启动的活动。
您可以使用其他操作组合和category.DEFAULT来响应不同的事件,但action.MAIN和category.LAUNCHER的组合应该只定义一次。