锁定屏幕后调用Android onCreate

时间:2013-05-01 14:29:55

标签: android locking lifecycle android-lifecycle oncreate

当我的应用程序在“顶部”运行时锁定屏幕时,系统几乎立即调用onCreate(屏幕仍为黑色)。这种破坏性行为可能是什么原因?

4 个答案:

答案 0 :(得分:5)

对我来说,我已经

android:configChanges="orientation"

但是这并没有帮助,因为我的活动是全屏的,所以我添加了

android:configChanges="keyboardHidden|orientation|screenSize"

在活动代码

正如Handling the Configuration Change Yourself

中所述
  

如果您的应用程序在特定配置更改期间不需要更新资源,并且您有性能限制要求您避免重新启动活动,那么您可以声明您的活动本身处理配置更改,这可以防止系统重新启动您的活动。

答案 1 :(得分:1)

这是Android操作系统的工作方式,它决定何时销毁您的视图。当您锁定手机时,您的应用会进入活动生命周期的暂停状态(onPause)。

当一个活动处于暂停状态并且需要大量内存时,android系统有权杀死你的应用程序(onStop)。

因此,当您解锁时,必须调用onCreate重新创建视图。

答案 2 :(得分:0)

在屏幕返回后,当您看到桌面(onDestroy()关闭应用程序)时,会调用

onDestroy()。

屏幕返回后,您会看到应用的第一个布局/视图,然后调用onStop()和onCreate()。

屏幕返回后,您在屏幕消失前看到相同的视图,然后调用onPause()和onResume()。

答案 3 :(得分:0)

如果活动处于横向模式且用户启用了锁定屏幕,则会发生这种情况。

这背后有两个原因:

  1. 如果启用了任何类型的锁定屏幕且“活动”处于横向模式: 如果设备在纵向模式下具有锁定屏幕,则当设备锁定时,它会自动切换到纵向模式(即使您的活动处于横向模式)。当设备解锁时,您的活动变得可见,但它再次从纵向(锁定时)转换为横向,因此活动将被销毁并重新创建。

  2. 这是Android操作系统的工作方式,它决定何时销毁您的视图。当您锁定手机时,您的应用会进入活动生命周期的暂停状态(onPause)。 当活动处于暂停状态并且需要大量内存时,系统有权终止您的应用程序(onStop然后onDestroy)。因此,当您解锁时,系统调用(onCreate)以重新创建视图。

  3. 解决方案:

    1. 您应该使用onSaveInstanceState()
    2. 小心保存并检查状态
    3. 在清单中使用android:configChanges="orientation|screenSize"作为活动代码。