13

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

4

4 回答 4

8

对我来说我已经

android:configChanges="orientation"

但这无济于事,因为我的活动是全屏的,所以我添加了

android:configChanges="keyboardHidden|orientation|screenSize"

在活动标签中

您自己处理配置更改中所述

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

于 2014-10-18T07:03:55.117 回答
3

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

这背后可能有两个原因:

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

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

解决方案:

  1. onSaveInstanceState()您应该使用OR仔细保存和检查状态
  2. 用于android:configChanges="orientation|screenSize"清单中的活动标签。
于 2017-10-10T11:09:14.910 回答
1

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

当活动处于暂停状态并且占用大量内存时,android系统有权终止您的应用程序(onStop)。

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

于 2013-05-01T14:34:27.467 回答
0

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

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

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

于 2013-10-18T06:43:36.670 回答