我可以从onResume()中调用startActivity()吗?

时间:2012-01-22 22:04:45

标签: android android-activity

我有一个Android活动,需要在调出自己的屏幕之前调用另一个活动(从用户那里获取密码)。我的代码目前通过调用onResume()中的startActivity()来实现这一点。它有点工作,但我一直在变得不一致的行为。谁能告诉我这种方法是否合法(如果没有,我该怎么做)?

谢谢,理查德。

4 个答案:

答案 0 :(得分:7)

startActivity()中呼叫onResume()绝对没问题。我有许多活动可以做到这一点,通常是对活动停止时发生的事件的反应。

所有startActivity()都告诉Android启动新活动,并在主线程可用时将其添加到后台堆栈的顶部,在此实例中将在Android完成调用所有必需的生命周期之后关于当前活动的回调。

如果您遇到奇怪的行为,我怀疑与此有关。

答案 1 :(得分:0)

您可以从onResume()调用startActivity(),但它是异步调用。因此onResume()(以及当前活动的其他方法)将一直运行,直到Android操作系统进入你的startActivity()异步调用并启动新活动。

您遇到的不一致行为可能与您的活动持续无限期有关,直到操作系统加载新活动为止。

答案 2 :(得分:0)

确实这是合法的,但取决于你想要做什么,这可能是不切实际的。一种常见的方法是从清单中定义的“第二”活动开始,然后移交给第一个活动。另一种方法是开始一项活动,例如结果。 onCreate(),甚至可以在调用任何setContentView()之前完成。有很多方法可以做到这一点,所以我想我们需要更多信息才能提供更精确的答案。

答案 3 :(得分:0)

听起来不是一个好主意。

一些替代方案:

  • 要求输入密码,您可以使用对话而不是活动。

  • 为什么不总是通过这个中间活动。如果不需要提示输入密码,它可以显示其他内容,例如连接到服务时的动画(假设密码是网络内容)