Android 调用onPause()后是否始终调用onStop()

Android 调用onPause()后是否始终调用onStop(),android,Android,是否有可能调用onPause(),然后紧接着调用onResume()?换句话说,在调用其onPause()之后,活动是否总是必须经过onStop()、onStart()和onResume() “活动生命周期”文档说这是可能的,但用户的哪些操作会触发这一点?任何人都可以创建一个活动JUnit测试来证明这一点吗?如果另一个活动没有完全掩盖活动,那么顶部的就不会被称为图像,它可以很好地告诉每件事 活动可以在onPause之后直接转到onResume是的,onPause()->onResume()->o

是否有可能调用onPause(),然后紧接着调用onResume()?换句话说,在调用其onPause()之后,活动是否总是必须经过onStop()、onStart()和onResume()


“活动生命周期”文档说这是可能的,但用户的哪些操作会触发这一点?任何人都可以创建一个活动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()
方法。也许这是不同安卓版本和设备实现的变体。