在不使用 FLAG 的情况下清除 activity 内的 Backstack

Clear the Backstack within an activity without using FLAG

我想清除 Activity 中的返回堆栈,但不是通过 startActivity() 和使用 FLAG。例如当我从应用程序图标启动应用程序时,应用程序主程序 activity 启动,但后台堆栈中有一些东西,如启动器 activity,因为当我们触摸最小化的应用程序选项卡时,启动器是可见的。我想从最小化的应用程序中删除启动器应用程序。

在清单中为您的 Activity

使用 android:noHistory="true" 属性
<activity android:name="StartActivity"
            android:noHistory="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

@SorryForMyEnglish 的回答是正确的。你就是无法实施它。通过使用 android:noHistory="boolean" 属性,请参阅下面我的概念图:

因为ActivityCActivityD(最后的活动)有一个true值,所以他们不能回到MainActivity,但他们可以回到[=18] =] 和 ActivityB。此外,ActivityAActivityB 可以返回到 MainActivity。并且在不使用此 startActivity(intent) 打开下一个 Activity 的情况下完全清除了后台堆栈(因此您将需要 FLAG):

Intent intent = new Intent(CurrentActivity.this, NextActivityToBeOpened.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);

你在manifest中声明值后,只需要调用这个startActivity(intent)打开下一个Activity(不需要FLAG):

startActivity(new Intent(CurrentActivity.this, NextActivityToBeOpened.class));

是不是很简单?

记住:

  • 在清单中将最后一个 Activity 设置为 android:noHistory="true"
  • 另一个 Activity 必须设置为 false 值。
  • 为您的所有Activity应用此属性。

此外,以下是如何在您的清单中使用它:

<activity android:name=".MyActivity" android:noHistory="true" />