【问题标题】:Understanding which Activity starts first in an Android app了解在 Android 应用中首先启动的 Activity
【发布时间】:2011-09-07 20:23:34
【问题描述】:

我不清楚 Android 如何确定在应用启动时首先启动哪个 Activity。 Android 文档说明了有关 Activities 的 AndroidManifest.xml 文件的以下内容:

“只有一个活动应该有“主”动作和“启动器”类别...”

所以在 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"

我完全糊涂了。这似乎与谷歌所说的只是假设有一个相反。 Android 是否会简单地抓取清单中最先出现的任何一个而忽略所有其他?如果不是,为什么会有多个 MAIN 和 DEFAULT?

【问题讨论】:

    标签: android android-activity


    【解决方案1】:

    我完全糊涂了。这似乎与谷歌所说的只是假设有一个相反。

    这并不相反。这些活动的类别有 CATEGORY_DEFAULT,但没有 CATEGORY_LAUNCHER。

    【讨论】:

    • 你是对的。 APIDemos 中只有其中之一。下周我将预约检查我的眼睛。谢谢。
    【解决方案2】:

    action.MAIN 和 category.LAUNCHER 用于指定当用户按下您的应用图标或从正在运行的应用列表中选择它时启动什么活动。

    您可以使用 action 和 category.DEFAULT 的其他组合来响应不同的事件,但 action.MAIN 和 category.LAUNCHER 的组合只能定义一次。

    【讨论】:

      【解决方案3】:

      Activity 通常需要支持 CATEGORY_DEFAULT,以便 Context.startActivity() 可以找到它们。所以,CATEGORY_DEFAULT 可以出现多次。

      Android 不会抓取清单中最先出现的任何一个,而是从具有 CATEGORY_LAUNCHER 的 Activity 开始。

      CATEGORY_LAUNCHER :活动可以是任务的初始活动,并列在顶级应用程序启动器中。

      更多详情请参考: http://developer.android.com/guide/topics/intents/intents-filters.html

      【讨论】:

      • 顶级应用启动器是什么意思?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      • 2014-01-29
      • 1970-01-01
      相关资源
      最近更新 更多