【问题标题】:Activity Lifecycle X Power Button X Lock Screen活动生命周期 X 电源按钮 X 锁屏
【发布时间】:2012-03-30 18:12:13
【问题描述】:

当我按下电源键时,屏幕关闭(完全黑暗),系统销毁我的活动,然后重新创建它:

03-28 22:48:00.934: V/[BB](5809): [GameControl] onPause
03-28 22:48:01.444: V/[BB](5809): [GameControl] onDestroy
03-28 22:48:01.724: V/[BB](5809): [GameControl] onCreate
03-28 22:48:03.016: V/[BB](5809): [GameControl] onResume
03-28 22:48:03.016: V/[BB](5809): [GameControl] onPause

这是因为我的活动具有固定的方向(横向)并且锁定屏幕是纵向的。

我通过设置固定的纵向方向来测试这个理论,但问题没有发生。我还检查了 getResources().getConfiguration() 值:

{ scale=1.0 imsi=724/31 loc=pt_BR touch=3 keys=2/1/1 nav=1/1 orien=2 layout=17 uiMode=17 seq=36}
{ scale=1.0 imsi=724/31 loc=pt_BR touch=3 keys=2/1/1 nav=1/1 orien=1 layout=17 uiMode=17 seq=37}
{ scale=1.0 imsi=724/31 loc=pt_BR touch=3 keys=2/1/1 nav=1/1 orien=2 layout=17 uiMode=17 seq=38}

如何避免这种情况? 我不希望我的活动被锁定屏幕破坏!

【问题讨论】:

  • 我不知道具体的答案,但您应该始终假设当您的活动不再处于活动状态时,它可能会在没有警告的情况下被系统杀死。
  • @thiagolr 请告诉我当你按下电源按钮时发生了什么?你的屏幕是完全黑暗的吗?那你能看到你的活动吗?
  • 是的,屏幕关闭(完全黑暗)并且上面的那些日志发生了(屏幕关闭时)。

标签: android android-lifecycle


【解决方案1】:

解决办法是添加

android:configChanges="orientation|keyboardHidden|screenSize"

AndroidManifest.xml 中的<activity> 元素上。

【讨论】:

  • 如果您的目标是 API 级别 13 或更高,您将需要 android:configChanges="orientation|screenSize"。请注意,如果您的 minsdk 小于 13,它将无法识别“screenSize”,因此唯一的选择是将目标 SDK 减少到与您的 min 相同。这很烦人,因为它会强制您的应用在屏幕边缘有一个软件菜单栏。
【解决方案2】:

也许onPause()onResume() 函数必须有代码。

请查看类似的帖子,在这里您可以了解它发生的原因。

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    相关资源
    最近更新 更多