在不使用FLAG的情况下清除活动中的Backstack

时间:2015-01-05 15:18:01

标签: android android-activity

我希望清除活动中的后台堆栈,而不是startActivity()并使用FLAG。例如当我从应用程序图标启动应用程序时,应用程序主要活动开始,但后备堆栈中有一些事情,如启动器活动,因为当我们触摸最小化的应用程序选项卡时,启动器是可见的。我想从最小化的应用程序中删除启动器应用程序。

2 个答案:

答案 0 :(得分:2)

@ SorryForMyEnglish的答案是对的。你无法实现它。使用android:noHistory="boolean"属性,请参阅下面的概念图​​:

concept

由于ActivityCActivityD(上次活动)的值为true,因此他们无法返回MainActivity,但他们可以返回ActivityAActivityB。此外,ActivityAActivityB可以返回MainActivity。并且在不使用此startActivity(intent)打开您的下一个Activity的情况下完全清除了Backstack(因此您需要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);

在清单中声明值后,您只需调用此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" />

答案 1 :(得分:1)

在Manifest中为您的活动使用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>