清除活动堆栈并在android中启动新活动

sha*_*anu 13 android android-activity

我的问题与这类问题略有不同.我需要删除或清除我的活动堆栈,然后开始一项新活动.我不认为这是一个clear_top标志问题.我正在解释一个例子:

我的活动流程:

Login > Home > Screen1 > screen2 ....
Run Code Online (Sandbox Code Playgroud)

我完成登录活动或使用no_history标志调用.所以我的活动看起来像这样

Login(finished)> Home [bottom of the stack now] > Screen1 > Screen2[top of the stack]
Run Code Online (Sandbox Code Playgroud)

我需要处理会话错误.如果在任何点发生任何会话错误,我需要返回登录活动.但请记住,我没有堆栈中的登录活动.所以clear_top不起作用.

如果在Screen2中发生任何会话错误,那么我需要清除完整堆栈(screen2,screen1,home),然后开始登录活动.因此,在返回按钮后按下登录活动将关闭我的应用程序.

有没有办法清除活动堆栈?

提前致谢

Gau*_*ale 20

用这个

Intent i = new Intent(yourScreen.this,Home.class);
        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        i.putExtra("EXIT", true);
        startActivity(i);
Run Code Online (Sandbox Code Playgroud)

在家庭班的onCreate,做这个来检查,

if (getIntent().getBooleanExtra("EXIT", false)) 
    {
        Intent i = new Intent(Home.this,Login.class);
        startActivity(i);
        finish();
    }
Run Code Online (Sandbox Code Playgroud)

这将基本上做的是无论你是什么活动,你可以用清晰的顶部标志调用主屏幕.在主屏幕中,onCreate方法中有一个检查条件,它将有助于清除堆栈并将您带到登录屏幕.现在在登录屏幕上,如果按回按钮,您将在堆栈清除时退出应用程序..

如果问题仍然存在,请告诉我......


Ant*_*ekM 9

这是一个古老的问题,但也许其他人会在搜索类似问题的答案时偶然发现它.

您应该使用标志启动Login活动:Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK- flag NEW_TASK可能有一点令人困惑的名称,但它实际上会创建新任务,如果它不存在(否则将使用当前任务) - 并将CLEAR_TASK从之前的所有活动中清除它.