Intent.FLAG\u ACTIVITY\u CLEAR\u TOP未关闭android中堆栈中的所有活动
我想在进入新活动之前关闭堆栈中的所有活动 这是我的密码Intent.FLAG\u ACTIVITY\u CLEAR\u TOP未关闭android中堆栈中的所有活动,android,Android,我想在进入新活动之前关闭堆栈中的所有活动 这是我的密码 Intent i=new Intent(first.this,secondsct.class); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); //i.addFla
Intent i=new Intent(first.this,secondsct.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
//i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
//i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
finish();
但这是行不通的。我以前试过,但现在不行。我不知道为什么。任何人都知道可能的原因。您可以尝试将
标记活动\u清除\u顶部
与标记活动\u新任务
结合使用
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP)
我尝试了Intent.FLAG\u ACTIVITY\u CLEAR\u TOP,但没有得到正确的解决方案,所以最终这对我有帮助
Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
ComponentName cn = intent.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
startActivity(mainIntent);
这将清除所有堆栈并仅运行LoginActivity在您想退出时使用此函数。希望这能解决你的问题
public void exit()
{
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
我还尝试了所有可能的标志,并像您一样调用了
finish()
方法。但是我找到了一个更好的方法,通过使用finishafinity()
方法来结束之前的所有活动
第三个答案中提出了这一解决方案。它解决了我的问题。希望它能解决您的问题。在您的清单文件中,您是否定义了带有任何值的
android:launchMode
?否。我是否必须为所有活动设置它?堆栈中是否已经存在被调用活动(secondsct)的实例?如果您看到有关CLEAR_TOP
的文档,其中说>“如果设置了,并且正在启动的活动已经在当前任务中运行,则不启动该活动的新实例,而是关闭其上的所有其他活动,并且此意图将作为新意图传递给(现在位于顶部的)旧活动。”不,堆栈中没有secondsct的实例。有一个问题是在类似的情况下提出的,请看这里仍然不清楚为什么它不起作用。我已经在2.1版中试用过了,效果不错。现在,在2.2中它不起作用时,你可以用你想开始的活动重新拼贴最后一行。。这将需要一点修改在我的情况下,这是唯一的解决方案,工作!谢谢