Android应用再次调用MAIN / LAUNCHER,而不是onResume()

时间:2011-12-06 19:47:09

标签: android android-manifest lifecycle

当我的Android应用程序 - 活动B - 被移动到后台时(由用户按下android主页按钮),它仍处于活动状态,onStop()被按预期调用。

活动B在这里没有被销毁,但是当用户再次点击应用程序的图标时,它再次调用intent-filter MAIN和LAUNCHER,启动活动A,而不是在活动B上调用onResume()。

所以显示了启动活动 - 活动A - ,但如果用户按下android后退按钮,则启动活动完成(),并显示旧活动 - 活动B - !

当活动B移动到后台时应该发生的事情是活动B暂停并停止。通过按应用程序图标恢复应用程序时,应恢复活动B. (除非它被杀死和摧毁,但它没有被杀死)

我该如何解决这个问题?活动B最初由活动A使用

打开
Intent next = new Intent(ActivityA.this, ActivityB.class);
startActivity(next);
finish();

以下是活动B的清单条目

<activity android:name=".ActivityB"
    android:screenOrientation="portrait"
              android:label="@string/app_name"
              android:configChanges="orientation|keyboardHidden">
</activity>

以下是活动A的清单条目

<activity android:name=".Activity A"
     android:screenOrientation="portrait"
              android:label="@string/app_name"
              android:configChanges="orientation|keyboardHidden">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>

为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:5)

在您声明活动b的清单文件中使用android:launchMode="singleTask"。然后活动b不在后台显示。