当我的应用程序“在顶部”运行时锁定屏幕时,系统几乎立即调用 onCreate(屏幕仍然是黑色的)。这种破坏性行为的原因可能是什么?
4 回答
对我来说我已经
android:configChanges="orientation"
但这无济于事,因为我的活动是全屏的,所以我添加了
android:configChanges="keyboardHidden|orientation|screenSize"
在活动标签中
如果您的应用程序在特定配置更改期间不需要更新资源,并且您有性能限制要求您避免重新启动活动,那么您可以声明您的活动自己处理配置更改,这会阻止系统重新启动您的活动。
如果 Activity 处于横向模式并且用户启用了锁定屏幕,则会发生这种情况。
这背后可能有两个原因:
如果启用了任何类型的锁定屏幕并且 Activity 处于横向模式:如果设备的锁定屏幕处于纵向模式,当设备被锁定时,它会自动切换到纵向模式(即使您的 Activity 处于横向模式)。当设备解锁时,您的 Activity 变得可见,但它再次从纵向(锁定时)转换为横向,因此 Activity 被销毁并重新创建。
这就是 Android 操作系统的工作方式,它决定何时销毁您的视图。当您锁定手机时,您的应用会进入活动生命周期的暂停状态 (onPause)。当活动处于暂停状态并且占用大量内存时,系统有权终止您的应用程序(onStop 然后 onDestroy)。所以当你解锁它时,系统调用 (onCreate) 来重新创建你的视图。
解决方案:
onSaveInstanceState()
您应该使用OR仔细保存和检查状态- 用于
android:configChanges="orientation|screenSize"
清单中的活动标签。
这就是 Android 操作系统的工作方式,它决定何时销毁您的视图。当您锁定手机时,您的应用会进入活动生命周期的暂停状态 (onPause)。
当活动处于暂停状态并且占用大量内存时,android系统有权终止您的应用程序(onStop)。
因此,当您解锁它时,它必须调用 onCreate 来重新创建您的视图。
当屏幕返回后您看到桌面(onDestroy() 关闭应用程序)时调用 onDestroy()。
屏幕返回后,您会看到应用程序的第一个布局/视图,然后将其称为 onStop() 和 onCreate()。
屏幕返回后,您在屏幕消失之前看到相同的视图,然后调用 onPause() 和 onResume()。