Activity在屏幕旋转时的生命周期?
参考答案:
在Android系统中,当屏幕发生旋转时,Activity的生命周期会经历一系列的变化。具体来说,系统会销毁当前的Activity实例,并重新创建一个新的Activity实例。这意味着应用程序需要在销毁和重新创建之间保存和恢复其状态。
以下是Activity在屏幕旋转时的生命周期的详细过程:
- 当用户旋转屏幕时,当前的Activity实例会被销毁。
- 系统会调用Activity的
onSaveInstanceState()
方法,允许开发者保存Activity的当前状态到一个Bundle对象中。这个Bundle对象会在Activity重新创建时被传递给onCreate()
或onRestoreInstanceState()
方法。 - 紧接着,系统会销毁当前的Activity实例。
- 系统会重新创建一个新的Activity实例,并调用其
onCreate()
方法。在这个方法中,开发者可以使用之前保存的Bundle对象来恢复Activity的状态。 - 在新的Activity实例创建完成后,系统会依次调用
onStart()
、onResume()
等方法,使Activity变得可见并可以响应用户的操作。
需要注意的是,如果开发者在onSaveInstanceState()
方法中保存了状态,那么当Activity重新创建时,系统会优先调用onRestoreInstanceState()
方法而不是onCreate()
方法来恢复状态。因此,开发者需要在onRestoreInstanceState()
方法中处理状态的恢复。
此外,开发者还可以通过重写onConfigurationChanged()
方法来处理屏幕旋转的配置更改回调,以避免Activity的重新创建和状态的保存与恢复过程。但是需要注意的是,这种方法只适用于处理一些简单的配置更改,对于更复杂的场景(如屏幕方向的变化),仍然需要依赖系统自动处理Activity的销毁和重新创建过程。