我有一个Android活动,需要在调出自己的屏幕之前调用另一个活动(从用户那里获取密码)。我的代码目前通过调用onResume()中的startActivity()来实现这一点。它有点工作,但我一直在变得不一致的行为。谁能告诉我这种方法是否合法(如果没有,我该怎么做)?
谢谢,理查德。
答案 0 :(得分:7)
在startActivity()
中呼叫onResume()
绝对没问题。我有许多活动可以做到这一点,通常是对活动停止时发生的事件的反应。
所有startActivity()
都告诉Android启动新活动,并在主线程可用时将其添加到后台堆栈的顶部,在此实例中将在Android完成调用所有必需的生命周期之后关于当前活动的回调。
如果您遇到奇怪的行为,我怀疑与此有关。
答案 1 :(得分:0)
您可以从onResume()调用startActivity(),但它是异步调用。因此onResume()(以及当前活动的其他方法)将一直运行,直到Android操作系统进入你的startActivity()异步调用并启动新活动。
您遇到的不一致行为可能与您的活动持续无限期有关,直到操作系统加载新活动为止。
答案 2 :(得分:0)
确实这是合法的,但取决于你想要做什么,这可能是不切实际的。一种常见的方法是从清单中定义的“第二”活动开始,然后移交给第一个活动。另一种方法是开始一项活动,例如结果。 onCreate()
,甚至可以在调用任何setContentView()
之前完成。有很多方法可以做到这一点,所以我想我们需要更多信息才能提供更精确的答案。
答案 3 :(得分:0)
听起来不是一个好主意。
一些替代方案:
要求输入密码,您可以使用对话而不是活动。
为什么不总是通过这个中间活动。如果不需要提示输入密码,它可以显示其他内容,例如连接到服务时的动画(假设密码是网络内容)