当我的应用程序在“顶部”运行时锁定屏幕时,系统几乎立即调用onCreate(屏幕仍为黑色)。这种破坏性行为可能是什么原因?
答案 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()。
屏幕返回后,您会看到应用的第一个布局/视图,然后调用onStop()和onCreate()。
屏幕返回后,您在屏幕消失前看到相同的视图,然后调用onPause()和onResume()。
答案 3 :(得分:0)
如果活动处于横向模式且用户启用了锁定屏幕,则会发生这种情况。
这背后有两个原因:
如果启用了任何类型的锁定屏幕且“活动”处于横向模式: 如果设备在纵向模式下具有锁定屏幕,则当设备锁定时,它会自动切换到纵向模式(即使您的活动处于横向模式)。当设备解锁时,您的活动变得可见,但它再次从纵向(锁定时)转换为横向,因此活动将被销毁并重新创建。
这是Android操作系统的工作方式,它决定何时销毁您的视图。当您锁定手机时,您的应用会进入活动生命周期的暂停状态(onPause)。 当活动处于暂停状态并且需要大量内存时,系统有权终止您的应用程序(onStop然后onDestroy)。因此,当您解锁时,系统调用(onCreate)以重新创建视图。
解决方案:
onSaveInstanceState()
或android:configChanges="orientation|screenSize"
作为活动代码。