2

我想在进行新活动之前关闭堆栈中的所有活动。

这是我的代码

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();

但这不起作用。我之前尝试过,但现在没有。我不知道为什么。谁能知道可能是什么原因。

4

4 回答 4

7

我已经尝试过 Intent.FLAG_ACTIVITY_CLEAR_TOP 但没有得到适当的解决方案所以最后这对我有帮助

Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
ComponentName cn = intent.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
startActivity(mainIntent);

这将清除所有堆栈并仅运行 LoginActivity

于 2014-04-08T05:17:07.643 回答
1

您可以尝试FLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_NEW_TASK.

i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP)

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP

于 2012-08-25T22:13:13.810 回答
0

每当你想退出时使用这个功能。希望这能解决你的问题

 public void exit()
    {
         Intent intent = new Intent(Intent.ACTION_MAIN);
         intent.addCategory(Intent.CATEGORY_HOME);
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         startActivity(intent);
    }
于 2014-04-08T05:23:58.397 回答
0

我还尝试了所有可能的标志,并且finish()像您一样调用该方法。但我找到了一种更好的方法来结束所有以前的活动,finishAffinity()而是使用方法。

在第三个答案中提出了此解决方案它解决了我的问题。希望它能解决你的问题。

于 2017-08-22T09:41:03.663 回答