繁体   English   中英

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

Clear Activity Stack and start new activity in android

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

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

我的活动流程:

Login > Home > Screen1 > screen2 ....

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

Login(finished)> Home [bottom of the stack now] > Screen1 > Screen2[top of the stack]

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

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

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

提前致谢

4 个回复

用这个

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

并在 Home 类的 onCreate 中,执行此操作以进行检查,

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

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

让我知道问题是否仍然存在...

这是一个老问题,但也许其他人在寻找类似问题的答案时会偶然发现它。

您应该使用以下标志启动登录活动: Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK - 标志NEW_TASK可能有点令人困惑,但它实际上会在它不存在的情况下创建新任务(否则将使用当前任务) - 和CLEAR_TASK将从所有以前的活动中清除它。

试试这个,

完成您当前的活动

     YourCurrentActivity.this.finish();  
     Intent intent1 = new Intent(YourCurrentActivity.this,LoginActivity.class);  
     intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);   
     startActivity(intent1); 

即使您的活动不在堆栈中,它也能工作。

希望能帮助到你。

在这个场景中使用 onActivityResult() 来管理活动。

1 清除整个历史堆栈并在 Android 上启动一个新活动

是否可以在堆栈上启动一个活动,在它之前清除整个历史记录? 情况 我有一个活动堆栈,要么是 A->B->C 要么是 B->C(屏幕 A 选择用户令牌,但许多用户只有一个令牌)。 在屏幕 C 中,用户可能会执行使屏幕 B 无效的操作,因此应用程序希望将它们带到屏幕 A,无论它是否已 ...

3 清除android活动堆栈开始新活动

我有一个应用程序,每个新创建的活动都将启动一个异步任务来验证用户会话。 如果会话有效,则应用程序流继续。 如果没有,则必须清除整个活动堆栈,并且应该只有登录活动。 此活动有一个“无历史记录”标志,因此它永远不会保存在堆栈中。 我一直在尝试这里提供的一些解决方案: Android:清除活动堆栈但没有 ...

5 如何清除Android中的活动堆栈?

我有一个要求,我可以从应用程序的任何活动中按注销按钮,问题是当我按注销按钮时,我需要获取login屏幕而不显示先前的活动。 我在用: 我正在开始这样的活动: 当我按下logout按钮时,我进入login屏幕,但是当我在设备上按back按钮时,它显示了先前的活动-当我在login ...

6 如何清除Android中的活动堆栈

我的Android应用中有以下应用流程, 登录->主页->屏幕1->屏幕2->屏幕3->屏幕4->注销 在屏幕4中,我有一个注销按钮,该按钮使用户可以从应用程序中注销并重新登录。 当我重新登录该应用程序时,仍显示以前的数据。 当用户从应用程序注销时,是否有办法重 ...

2010-12-27 17:42:03 4 897   android
7 在开始新活动之前清除android堆栈

我有一个包含三个活动的应用程序:登录,注册和主要活动。 我想在用户登录或注册后启动Main活动。 但是,当用户按下“后退”按钮时,他应该看不到登录的活动。换句话说,我想在开始Main活动之前清除活动堆栈。 我在网上看到了一些解决方案,例如: this , this和this 。 ...

10 清除Android活动堆栈并开始活动

我知道这个问题已经在其他帖子中得到了解答。 但这不能解决我的问题。 我有3 screens: A,B and Home 。 应用程序以A开头,然后转到B,然后转到主页。 但是我想在活动A和B到达“主页”活动时删除它,以便在back is pressed app exits 。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM