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

CQM*_*CQM 1 lifecycle android android-manifest

当我的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();
Run Code Online (Sandbox Code Playgroud)

这是活动B的清单条目

<activity android:name=".ActivityB"
    android:screenOrientation="portrait"
              android:label="@string/app_name"
              android:configChanges="orientation|keyboardHidden">
</activity>
Run Code Online (Sandbox Code Playgroud)

这是活动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>
Run Code Online (Sandbox Code Playgroud)

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

kal*_*a c 5

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