启动Android应用程序时启动的活动太多

时间:2009-12-24 02:15:14

标签: android

我正在确认创建活动。

我的Manifest.xml是这样的:

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".FirstActivity"
          android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<activity android:name=".SecondActivity"
          android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
 <activity android:name=".ThirdActivity"
          android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

您可以看到属性action android:name=属性为"android.intent.action.MAIN"和 所有活动category android:name=都是"android.intent.category.LAUNCHER"

当应用程序启动时,它会调用FirstActivity。

然后调用无用的Activity,例如ThirdActivity或SecondActivity。

在这种情况下,我的manifest.xml是否正确?

或者,我是否需要为Second和Third活动设置另一个属性? 如果是这样,那是什么?

我想manifest.xml文件适合我的情况。

请告知。

提前致谢。

3 个答案:

答案 0 :(得分:2)

试试这个配置:

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".FirstActivity" android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<activity android:name=".SecondActivity" android:label="@string/app_name">
    <intent-filter>
    </intent-filter>
</activity>
 <activity android:name=".ThirdActivity" android:label="@string/app_name">
    <intent-filter>
    </intent-filter>
</activity>

答案 1 :(得分:1)

Intent视为用于启动Activity做某事的消息。所以我可以创建一个Intent来查看一个网页和一个活动,该活动知道如何查看网页 - 很可能是浏览器 - 可以拦截他的意图作为行为。

您告诉Android哪些活动可以使用您的清单<intent-filter>部分对哪些意图采取行动。

MAIN Intent是一个特殊的。这是在应用程序启动时发送到应用程序,基本上它说“去!”因此,首先要显示的Activity需要通过正确定义<intent-filter>来拦截它。

由于您的过滤器中包含MAIN的所有三个活动,因此它们都响应了启动应用程序的请求。因此,<intent-filter>仅适用于FirstActivity

答案 2 :(得分:1)

使用的其他问题之一 <category android:name="android.intent.category.LAUNCHER" />针对多项活动,电话的启动器菜单会显示多个图标......

来自文档:

  

CATEGORY_LAUNCHER活动可以   是任务的初始活动   列在顶级应用程序中   发射器。