locking屏幕后调用Android onCreate

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

对我来说,我已经

 android:configChanges="orientation" 

但这并没有帮助,因为我的活动是全屏幕,所以我补充说

 android:configChanges="keyboardHidden|orientation|screenSize" 

在活动标签中

如处理configuration改变你自己所述

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

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

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

所以它必须调用onCreate来重新创build你的视图,当你解锁它。

onDestroy()是在屏幕回退之后调用的时候看到桌面(onDestroy()closures的应用程序)。

屏幕回来后,你看到你的应用程序的第一个布局/视图,然后它被称为onStop()和onCreate()。

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

如果“活动”处于“风景”模式并且“用户locking”屏幕处于启

这背后有两个原因:

  1. 如果启用了任何types的locking屏幕,并且活动处于横向模式:如果设备在纵向模式下locking屏幕,当设备locking时,它会自动切换到纵向模式(即使您的活动处于横向模式)。 当设备解锁时,您的活动变得可见,但它又从肖像(locking时)转换到横向,因此活动将被销毁并重新创build。

  2. 这是Android操作系统的工作原理,它决定何时销毁您的视图。 当您locking手机时,您的应用将进入活动生命周期的暂停状态(onPause)。 当一个活动暂停状态,如果它需要大量的内存,系统有权杀死你的应用程序(onStop然后onDestroy)。 所以当你解锁它时,系统调用(onCreate)来重新创build你的视图。

解:

  1. 您应该仔细保存并使用onSaveInstanceState()或检查状态
  2. 在清单中使用android:configChanges="orientation|screenSize"作为您的活动标签。