相关问题:
我的Activity表现出一种奇怪的行为。
竖屏模式(正常)
- 按下屏幕锁定键,
Activity: onPause()
; - 解锁屏幕,
Activity: onResume()
。
横屏模式(奇怪的情况)
- 按下屏幕锁定键,
Activity: onPause() -> onStop() -> onDestroy() -> onCreate() -> onStart() -> onResume()
加载 竖屏 布局; - 解锁屏幕,
Activity: onPause() -> onStop() -> onDestroy() -> onCreate() -> onStart() -> onResume()
加载 横屏 布局。
我期望的结果是:
竖屏模式:(与前述相同)
横屏模式:(应该像竖屏模式一样)
- 按下屏幕锁定键,
Activity: onPause()
; - 解锁屏幕,
Activity: onResume()
。
因此我的问题是:
- 为什么我的Activity会表现出这种行为?
- 你的Activity是如何表现的?
我的问题的原始描述:
当我按下手机的锁屏按钮时,当我的Activity处于横屏模式时,我注意到(在我输出到Eclipse的调试信息中)Activity被重新创建为其竖屏模式(当然屏幕全黑)。然后当我再次按下锁屏按钮解锁屏幕时,Activity被销毁并重新创建为其竖屏模式。
据我记得(不确定),和我期望的一样,在横屏模式下锁定屏幕时,我的Activity只应该经历 onSaveInstanceState()
和 onPause()
,就像在竖屏模式下一样。而不是将Activity重新创建为竖屏模式,然后再返回到横屏模式。
是我在手机上弄错了什么吗?我该如何恢复正常?
谢谢!
感谢大家对这个问题的贡献。特别感谢@HoanNguyen在他的设备上为我进行测试的努力。特别感谢@Raghunandan与我就这个问题进行了深入的讨论。
总结大家目前的贡献,我得出以下结论:
1. 这是一种正常现象。
在移动设备上,运行在横屏模式下的Activities在屏幕锁定后会切换到纵向模式,这似乎是正常的行为。至少在目前测试的手机上是如此。因此,我们必须确保我们的生命周期函数始终可以优雅地处理这种变化。
2. 我们猜测这是由于锁定屏幕中的“默认方向”所导致的。
我们没有关于这个问题的文档或许多资源。但假设运行的Activities在屏幕锁定后切换回设备的“默认方向”,因为大多数设备的锁定屏幕都是纵向,这是相当合理的。
进一步研究:
我想知道如果我们有一个横向的锁定屏幕,Activities会怎样表现?