当电话进入睡眠状态时,活动OnCreate被呼叫

ite*_*tor 20 android

当我按下Droid上的睡眠按钮时,我的活动的oncreate被调用.为什么会这样?操作系统为什么要在设备进入睡眠状态时调用OnCreate?有没有办法阻止它,或者至少知道它是因为手机已经入睡?

Pro*_*man 22

这种情况尤其适用于锁定在旋转中的活动,例如在活动标记内的清单中:

android:screenOrientation="portrait"
Run Code Online (Sandbox Code Playgroud)

当您关闭屏幕时,它会读取加速计以确定真正的方向并在关闭之前更改为该方向.

所以,是的,简单的解决方案是添加configChanges,使它看起来像这样:

<activity 
    android:name=".MyActivity"
    android:screenOrientation="landscape"
    android:configChanges="orientation"
/>
Run Code Online (Sandbox Code Playgroud)

您不需要指示screenOrientation,但是如果您没有指示它在启动时的任何方向,那么除非您编写代码来处理配置更改,否则它将保持不变.

作为旁注,当我开始在ICS上测试我的应用程序时,我必须在一些活动开始时处理一些带有创建/销毁/创建周期的怪癖.为了使代码具有通用性,需要一些额外的检查和平衡.

  • 谢谢.你是对的.我通过将screenSize添加到configChanges中找到了一个解决方案,例如`android:configChanges ="orientation | screenSize"`.从文档:"注意:如果您的应用程序的目标是API级别13或更高(由minSdkVersion和targetSdkVersion属性声明),那么您还应该声明"screenSize"配置,因为当设备在纵向和横向之间切换时它也会发生变化方向". (8认同)

Net*_*ero 10

我有相同的Prob我的应用程序(游戏)重新加载,只要它来自睡眠

在这里我做了什么来解决它

我加

<activity 
     android:configChanges="orientation|screenSize"
/>
Run Code Online (Sandbox Code Playgroud)

希望这会对某人有所帮助!