【问题标题】:About lifecycle of activities关于活动的生命周期
【发布时间】:2010-04-05 17:28:30
【问题描述】:

在我的应用程序中,我有几个活动,主屏幕有 4 个按钮,每个按钮启动一个不同的活动。因此,其中之一是搜索活动,一旦搜索,它就会向您显示结果活动。这个结果活动可以从其他活动中获得,所以通常是这样的:

Main activity -> Search activity -> Result activity

Main acitivty -> someother activity -> Result activity

现在,如果我已达到此结果活动并按一次或两次返回,然后按 Home 键,它将显示主屏幕。但是,如果我想通过按住 Home 按钮并单击我的应用程序来返回我的应用程序,它将始终返回到 Result 活动,无论哪个活动是我使用的最后一个活动。如果我再次按下返回,它将带我回到主屏幕。

如果我再试一次,它会再次将我带到结果活动。避免这种情况的唯一方法是通过单击应用程序的图标来启动应用程序。这会将我带到我正在使用的最后一个活动并且它会记住状态,因此如果我再次按下它不会将我带到主屏幕,而是将我带到它之前的活动。为了说明这一点:

Main activity -> Search activity -> result activity --back--> Search activity --Home Button--> Home Screen --Hold Home and select the app --> Result activity --back--> Home Screen

--Click application icon--> Search activity --back--> Main activity

发生的另一件事是,如果我在 Result 活动上按下 Home 按钮,并通过单击图标启动应用程序,它会将我带到 Result 之前的活动。

为什么会这样?有什么解决方法吗?

【问题讨论】:

  • 你是如何开始你的活动的?您在 Intent 中使用的任何特定标志?
  • 是的,我正在添加一个标志来启动 Result 活动,并且我也传递了一些数据。像这样的东西: Intent intent = new Intent(this, Result.class); intent.putExtra("结果", aString);意图.addFlags(R.id.flag_search);开始活动(意图);
  • 调查它,intent.addFlags(R.id.flag_search) 通过注释掉该行或使用任何 int 而不是 R.id.flag_search 解决了这个问题。嗯,现在为什么我不能在那里存储我的标志?我应该使用静态类来存储不同的标志吗?
  • 忽略我的最后一个问题(我无法编辑它),我现在知道我不应该为此使用 addFlags。

标签: android android-activity


【解决方案1】:

看起来您的 intent.addFlags 使用您自己的“自定义”标志向您的新活动 (R.id.flag_search) 发送值?我不确定是否支持或预期使用标志和活动。这些标志记录在这里:

http://developer.android.com/intl/de/reference/android/content/Intent.html#setFlags%28int%29

【讨论】:

  • 谢谢!这就是问题所在。我想我必须使用另一种方法来区分我的活动。所以我能想到的唯一方法是使用 Intent.putExtra,还是有其他方法?
  • 我确实相信 Intent.putExtra 是满足活动之间所有数据发送需求的方法。祝你好运!
【解决方案2】:

alwaysRetainTaskState 设置为真。

【讨论】:

  • 这难道不是与期望的相反吗?再加上文档说“这个属性只对一个任务的根活动有意义;它对所有其他活动都被忽略了。”
猜你喜欢
  • 2011-11-21
  • 2014-05-18
  • 1970-01-01
  • 1970-01-01
  • 2013-01-13
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多