【发布时间】:2012-07-18 20:07:16
【问题描述】:
是否有可能调用 onPause(),然后立即调用 onResume()?换句话说,在调用它的 onPause() 之后,Activity 是否总是要经过 onStop()、onStart() 和 onResume()?
活动生命周期文档说这是可能的,但是触发它的用户操作是什么?任何人都可以创建一个活动 JUnit 测试来证明这一点吗?
【问题讨论】:
标签: android
是否有可能调用 onPause(),然后立即调用 onResume()?换句话说,在调用它的 onPause() 之后,Activity 是否总是要经过 onStop()、onStart() 和 onResume()?
活动生命周期文档说这是可能的,但是触发它的用户操作是什么?任何人都可以创建一个活动 JUnit 测试来证明这一点吗?
【问题讨论】:
标签: android
如果Activity 没有被另一个Activity 完全遮挡,那么onStop 将不会被调用
【讨论】:
是的,onPause() -> onResume() -> onPause() -> onResume() 循环经常发生。
请参阅Activity lifecycle 文档。
如果Activity 完全被遮挡(例如被另一个Activity),它可能会被停止,但如果它只是被另一个Activity 部分遮挡(例如,设置为对话框主题),那么它当“弹出”Activity 关闭时,将简单地暂停然后恢复。
【讨论】:
AlertDialog 弹出窗口不会导致onPause() 被调用。想一想,我有几个“弹出窗口”,它们实际上是用对话框“主题”创建的Activity 类。它们实际上看起来像弹出窗口,但没有覆盖整个屏幕 - 结果是调用了onPause(),但因为它们没有完全掩盖底层的Activity,它只会暂停并且不会转到@987654335 @舞台。
Activity 类都扩展了我创建的基础Activity,并且每个onXXXX 方法都记录了它们被调用的情况。我可以绝对确认,当我的一个以Activities 为主题的对话框部分覆盖另一个Activity 时,肯定会调用该Activity 的onPause() 方法。也许这是不同 Android 版本和设备实现的变体。
image here很好地讲述每一件事
活动可以在onPause之后直接去onResume。
【讨论】:
OS。据我所知,我们对此无能为力。