【问题标题】:Too many Activities being started when launching an Android Application启动 Android 应用程序时启动的活动过多
【发布时间】:2009-12-24 02:15:13
【问题描述】:

我正在确认创建活动。

我的 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。 然后调用ThirdActivity或SecondActivity等无用的Activity。

在这种情况下,我的manifest.xml 正确吗? 或者,我是否需要为第二个和第三个活动设置另一个属性? 如果有,那是什么?

我想知道 manifest.xml 文件是否适合我的情况。 请指教。

【问题讨论】:

    标签: android android-activity android-manifest


    【解决方案1】:

    试试这个配置:

    <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>
    

    【讨论】:

    • 好的。谢谢。第二个和第三个 Activity 看起来像子 Activity 吗?
    • 是的,您可以稍后使用 Intents 启动它们。
    【解决方案2】:

    Intent 视为用于启动Activity 做某事的消息。所以我可以创建一个Intent 来查看一个网页和一个带有 Activity 的应用程序,该 Activity 知道如何查看网页 - 很可能是浏览器 - 可以拦截他的 Intent 并对其采取行动。

    您使用 Manifest 的 &lt;intent-filter&gt; 部分告诉 Android 哪些活动可以作用于哪些 Intent。

    MAINIntent 是一个特殊的。它在启动时发送到应用程序,基本上它说“开始!”所以应该首先显示的Activity 需要通过正确定义的&lt;intent-filter&gt; 来拦截它。

    由于您的过滤器中包含MAIN 的所有三个活动,它们都响应了启动您的应用程序的请求。所以你应该只为FirstActivity 提供&lt;intent-filter&gt;

    【讨论】:

      【解决方案3】:

      使用的其他问题之一 &lt;category android:name="android.intent.category.LAUNCHER" /&gt; 不止一项活动是手机的启动器菜单将显示多个图标...

      来自文档:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-31
        • 1970-01-01
        • 2019-04-04
        • 2012-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多