我希望清除活动中的后台堆栈,而不是startActivity()
并使用FLAG。例如当我从应用程序图标启动应用程序时,应用程序主要活动开始,但后备堆栈中有一些事情,如启动器活动,因为当我们触摸最小化的应用程序选项卡时,启动器是可见的。我想从最小化的应用程序中删除启动器应用程序。
答案 0 :(得分:2)
@ SorryForMyEnglish的答案是对的。你无法实现它。使用android:noHistory="boolean"
属性,请参阅下面的概念图:
由于ActivityC
和ActivityD
(上次活动)的值为true
,因此他们无法返回MainActivity
,但他们可以返回ActivityA
和ActivityB
。此外,ActivityA
和ActivityB
可以返回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>