文章目录
当Activity处于Android应用中运行时,它的活动状态由Android以Activity栈的形式管理,当前活动的Activity位于栈顶。
Activity的生命周期
onCreate(Bundle savedStatus)
:创建Activity时被回调。该方法只会被调用一次。onStart()
:启动Activity时被回调。onRestart()
:重新启动Activity时被回调。onResume()
:恢复Activity时被调用。在onStart()方法后一定会回调onResume()方法。此时该Activity位于前台,用户可见,可以获得焦点。onPause()
:暂停Activity时被回调。此时其他Activity位于前台,该Activity依然可见,只是不能获得焦点。onStop()
:停止Activity时被回调。此时该Activity不可见,失去焦点。onDestroy()
:销毁Activity时被回调。该方法只会被调用一次。此时该Activity结束,或Activity所在的进程被终止。
详细说明:
- 从旧活动启动一个普通的新活动时:旧活动变得不可见且失去焦点,因此会调用旧活动的onPause()、onStop()方法;而新活动会被创建,可见且可以获得焦点,所以会依次调用onCreate()、onStart()和onResume()方法。
- 从新活动返回旧活动时:新活动会被销毁,因此会调用旧活动的onPause()、onStop()和onDestroy()方法;而旧活动因为已经存在,所以会依次调用onRestart()、onStart()和onResume()方法。
- 从旧活动启动一个对话框风格的新活动时:旧活动仍然部分可见,但失去焦点,因此会调用onPause()方法;而新活动会被创建,可见且可以获得焦点,所以会依次调用onCreate()、onStart()和onResume()方法。
- 从一个对话框风格的新活动返回旧活动时:对话框风格的新活动会被销毁,因此会调用旧活动的onPause()、onStop()和onDestroy()方法;而旧活动一直可见,现在只是恢复成可以获得焦点的状态,所以只会调用onResume()方法。
常见应用场景:
- 当用户正在使用某应用观看视频,此时有电话进来,那么我们需要将视频暂停并保存当前播放状态,这就可以通过重写onPause()方法来实现。当再次切换回视频应用时,onResume()方法会被回调,因此可以通过重写onResume()方法来恢复视频播放状态。