【问题标题】:Android - How to finishes the all activitiesAndroid - 如何完成所有活动
【发布时间】:2011-07-22 07:50:46
【问题描述】:

我的应用程序有 10 个活动。每个活动都包含一个按钮。如果您单击该按钮,则所有活动都将完成(这意味着就像 gmail 中的注销)。在这里,我使用 2 个步骤。但它不起作用。 1. 使用 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) 为每个活动调用清除堆栈。 2. this.finish() 在按钮点击监听器中。

如何实现?

【问题讨论】:

  • 你的应用中需要 10 个 Activity 做什么?
  • 每个活动都有一些功能。 A1 用于登录,A2 用于欢迎页面,......就像这样
  • 按下后退按钮时是否需要返回上一个活动?
  • @naresh:请看一下这个问题右下角的相关链接。
  • 没有。如果您单击后退按钮,我想退出应用程序。

标签: android


【解决方案1】:

如果您在按下返回按钮时不需要返回,您可以在调用意图后立即调用finish()进行另一个活动。因此当前活动已完成。因此您只需完成最后一个活动你在。

如果你调用欢迎表单登录喜欢

startActivity(login.this,welcome.class);
finish();

当您在欢迎活动中调用完成()时,您的应用程序将完成(),因为它是您已经完成先前活动的唯一活动

【讨论】:

  • 剩余的活动如何完成?
  • 如果你不必回到你要去的另一个活动的活动,你可以在你离开的时候通过调用另一个活动的意图来完成它们
  • 我假设您不需要以登录身份返回->欢迎等
  • 假设此时我在欢迎屏幕中,我可以单击后退按钮,然后它将退出应用程序。清楚了吗?
  • 这段代码可以放在欢迎屏幕后退按钮监听器中。对吗?
【解决方案2】:

在调用每个新活动时使用 FLAG_ACTIVITY_CLEAR_TOP 意图标志.. 所以它的作用是清除所有顶级活动并启动这个新活动......现在如果你将使用 finish() 关闭当前活动..it'将被关闭,并且由于 FLAG_ACTIVITY_CLEAR_TOP 所有其他人都已经关闭...

它总是对我有用....查看文档以进一步阅读..

【讨论】:

  • 这可以放在 startActivity() 之前或 startAcitvity() 之后
  • 当您为意图分配值时..假设您必须启动活动2...然后您将编写 Intent i=new Intent(activity1.this,activity2.class) 现在设置标志通过编写 i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);开始活动(一);简单
  • 我也是这样做的。但这是行不通的。它只会完成当前活动并显示上一个活动。没有完成所有的活动(这意味着没有退出应用程序)。
猜你喜欢
  • 2011-06-13
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 2012-12-09
  • 1970-01-01
  • 2011-09-06
  • 1970-01-01
  • 2011-09-13
相关资源
最近更新 更多