清除所有活动

时间:2012-12-04 16:11:57

标签: android stack clear back

我有4个活动:A,B,C和D.还有一个:E。

当你开始A,B,C和D之间的新活动时,没有问题。但是在这些中的某些点(例如,当登录成功时)我们想要启动活动E但是清除所有A,B ,C和D活动(即清除后台堆栈)。

所以,我希望当你到达活动E时,按下后退按钮,你将离开应用程序。

我正在尝试在startActivity中添加标志:Intent.FLAG_ACTIVITY_CLEAR_TASK,Intent.FLAG_ACTIVITY_CLEAR_TOP等等,但我无法实现这一行为。

有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

Intent intent = new Intent(this, EActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                this.startActivity(intent);
                this.finish();

答案 1 :(得分:0)

将活动E中的onBackPressed覆盖为

    @Override
    public void onBackPressed() {
        moveTaskToBack(true);
    }

答案 2 :(得分:0)

尝试startActivity活动A,B,C和E

Intent intent = new Intent(A.this,B.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
A.this.finish();

并在androidmanifest.xml中声明您的A,B和C活动:

<Activity android:name=".A" 
    android:launchMode="singleInstance" />
 //..do B,C activities same

并覆盖活动E中的onKeyDown

@verride
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if ((keyCode == KeyEvent.KEYCODE_BACK))
    {
        Activity_E.this.finish();
    }
    return super.onKeyDown(keyCode, event);
}