Android 调用onPause()后是否始终调用onStop()
是否有可能调用onPause(),然后紧接着调用onResume()?换句话说,在调用其onPause()之后,活动是否总是必须经过onStop()、onStart()和onResume()Android 调用onPause()后是否始终调用onStop(),android,Android,是否有可能调用onPause(),然后紧接着调用onResume()?换句话说,在调用其onPause()之后,活动是否总是必须经过onStop()、onStart()和onResume() “活动生命周期”文档说这是可能的,但用户的哪些操作会触发这一点?任何人都可以创建一个活动JUnit测试来证明这一点吗?如果另一个活动没有完全掩盖活动,那么顶部的就不会被称为图像,它可以很好地告诉每件事 活动可以在onPause之后直接转到onResume是的,onPause()->onResume()->o
“活动生命周期”文档说这是可能的,但用户的哪些操作会触发这一点?任何人都可以创建一个活动JUnit测试来证明这一点吗?如果另一个
活动没有完全掩盖活动,那么顶部的就不会被称为图像,它可以很好地告诉每件事
活动可以在onPause
之后直接转到onResume
是的,onPause()
->onResume()
->onPause()
循环发生是很常见的
见文件
如果一个活动
被完全遮挡(例如被另一个活动
遮挡),它可能会被停止,但如果它只被另一个活动
遮挡了一部分(例如,设置了对话框主题),那么它将被暂停,然后在关闭“弹出式活动
时恢复。是,这就是我问这个问题的原因。直接触发从onPause()到onResume()状态转换的操作是什么?这里的情况只属于OS
。据我所知,我们对此无能为力。“属于操作系统”意味着什么?在我的实验中,甚至连弹出对话框都没有调用onPause()。我只能通过单击“关机”按钮来观察所需的行为(已调用onPause,但未调用onStop),但我尚未在实际设备上对其进行测试。@dacongy:实际上,您可能会正确地使用类似于AlertDialog
弹出窗口这样的操作,而不会导致调用onPause()
。仔细想想,我有几个“弹出窗口”,它们实际上是用对话框“主题”创建的活动类。它们实际上看起来像弹出窗口,但没有覆盖整个屏幕-结果是调用了onPause()
,但因为它们没有完全隐藏底层的活动
,所以它只会被暂停,而不会进入onStop()
阶段。不,不会调用onPause()。我在回调方法中添加了logcat打印,当对话框弹出时,不会打印关于onPause()的任何内容。我在真实设备上进行了测试,按下电源按钮可以实现所需的行为。@dacongy:my的所有Activity
类都扩展了我创建的基本Activity
,并且每个onXXXX
方法都记录了它们被调用的情况。我完全可以确认,当我的一个主题为活动的对话框部分覆盖另一个活动时,肯定会调用该活动的onPause()
方法。也许这是不同安卓版本和设备实现的变体。