首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android:清除活动堆栈

Android:清除活动堆栈
EN

Stack Overflow用户
提问于 2011-08-16 16:16:29
回答 7查看 116.1K关注 0票数 142

我的应用程序中有几个活动。流程是非常复杂的。当我单击注销应用程序导航到登录屏幕时,用户可以从那里通过取消按钮退出(调用system.exit(0) )

当我退出或后退按钮时,系统调用堆栈中的活动:(当我到达登录屏幕时,如何清除堆栈中的所有活动?调用finish()是不实际的,因为有太多的活动,有些活动在活动时不应该关闭,例如本机相机调用活动。

代码语言:javascript
复制
validateuser logoutuser = new validateuser();
logoutuser.logOut();
Intent loginscreen = new Intent(homepage.this, Login2.class);
(homepage.this).finish();
loginscreen.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(loginscreen);
EN

回答 7

Stack Overflow用户

发布于 2013-05-22 22:56:53

下面是一个简单的助手方法,用于启动一个新的activity作为新的top activity,它从API level 4一直到当前版本17:

代码语言:javascript
复制
static void startNewMainActivity(Activity currentActivity, Class<? extends Activity> newTopActivityClass) {
    Intent intent = new Intent(currentActivity, newTopActivityClass);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
        intent.addFlags(0x8000); // equal to Intent.FLAG_ACTIVITY_CLEAR_TASK which is only available from API level 11
    currentActivity.startActivity(intent);
}

从您当前的活动中这样调用它:

代码语言:javascript
复制
startNewMainActivity(this, MainActivity.class);
票数 16
EN

Stack Overflow用户

发布于 2015-10-09 16:32:43

代码语言:javascript
复制
Intent intent = new Intent(LoginActivity.this, Home.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  //It is use to finish current activity
startActivity(intent);
this.finish();
票数 4
EN

Stack Overflow用户

发布于 2012-12-21 08:03:59

在我的例子中,LoginActivity也被关闭了。结果,

代码语言:javascript
复制
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK

无济于事。

但是,设置

代码语言:javascript
复制
Intent.FLAG_ACTIVITY_NEW_TASK

帮了我。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7075349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档