相关问题:
这是我在活动中遇到的一种奇怪行为。
人像模式(正常)
- 按屏幕锁定,
Activity: onPause()
; - 解锁屏幕,
Activity: onResume()
.
横向模式(很奇怪)
- 按屏幕锁定,
Activity: onPause() -> onStop() -> onDestroy() -> onCreate() -> onStart() -> onResume()
加载纵向布局; - 解锁屏幕
Activity: onPause() -> onStop() -> onDestroy() -> onCreate() -> onStart() -> onResume()
并加载横向布局。
我期望的是:
人像模式:(同)
横向模式:(应该像纵向模式一样)
- 按屏幕锁定,
Activity: onPause()
; - 解锁屏幕,
Activity: onResume()
.
所以我的问题:
- 为什么我的活动会这样?
- 您的活动表现如何?
我的问题的原文描述:
当我按下手机的锁定屏幕按钮时,当我的活动处于横向模式时,我注意到(在我输出到 Eclipse 的调试消息中)活动被重新创建为纵向模式(当屏幕全黑时,当然)。然后,当我再次按下锁定屏幕按钮以解锁屏幕时,活动被破坏并再次重新创建为其肖像。
我记得(虽然不是 100% 肯定),我期望的是,我的 Activity 应该只经历onSaveInstanceState()
and onPause()
,而在横向模式下锁定屏幕,就像它在纵向模式下所做的那样。而不是将活动重新创建为纵向并再次返回到横向。
是不是我的手机搞砸了什么?我怎样才能让它恢复正常?
谢谢!
感谢大家为这个问题做出贡献。特别感谢@HoanNguyen 在他的设备中为我进行的测试。特别感谢@Raghunandan 与我就这个问题进行了深入讨论。
总结到目前为止大家的贡献,我有以下结论:
1. 这是正常现象。
看来,在手机上,处于横向模式的正在运行的活动在屏幕锁定时切换到纵向模式是正常行为。至少到目前为止,在经过测试的手机上是这样。所以我们必须确保我们的生命周期函数能够始终优雅地处理这种变化。
2.猜猜这是因为锁定屏幕中的“默认方向”。
我们没有关于此问题的文档或许多资源。但是假设正在运行的活动在屏幕锁定时切换回设备的“默认方向”,因为在大多数设备中锁定的屏幕是纵向的,这是非常合乎逻辑的。
进一步研究:
我只是想知道如果我们有一个横向锁定屏幕,活动会如何表现?