Activity的生命周期详解

导语

Activity是Android最常用的四大组件之一,了解其生命周期有利于我们根据业务逻辑合理地将功能实现写到对应的方法中。

生命周期

一个activity的生命周期如下:
Activity的生命周期详解
activity的整个生命周期发生在onCreate和onDestroy之间;
可见生命周期发生在onStart和onStop之间;
前台生命周期发生在onResume和onPause之间。

以下是一些常见的回调函数:

onCreate()

在活动第一次创建时调用,初始化。

onStart()

在活动即将为用户可见时调用。

onResume()

在活动即将开始为用户所交互时调用。

onPause()

被暂停的活动不能再进行交互,但此时仍然可见。

该方法中不能做耗时操作,因为一般从activity A启动activity B时,会先执行该方法再启动activity B,如果有耗时操作,则activity B启动很慢。

onStop()

在活动即将不可见时调用。

onDestroy()

在活动即将被销毁时调用。

onRestart()

在活动被停止后重新打开时调用。

情形分析

启动activity

onCreate -> onStart -> onResume (-> … … )

退出activity

(… … ->) onPause -> onStop -> onDestroy

从A启动B

(… … ->) onPause_A -> onCreate_B -> onStart_B -> onResume_B (-> onStop_A -> … … )

如果启动B后,A完全不可见,则执行onStop_A,如果部分可见,则不执行。

从B返回A

  • 如果之前A是不可见,即已经是stopped状态:

(… … ->) onPause_B -> onResume_A -> onStop_B (-> … … )

  • 如果之前A部分可见,即是paused状态:

(… … ->) onPause_B -> onRestart_A -> onStart_A -> onResume_A -> onStop_B (-> … … )

横竖屏切换

(… … ->) onPause -> onStop -> onDestroy -> onCreate -> onStart -> onResume (-> … … )

点击Home键返回主屏

(… … ->) onPause -> onStop (-> … … )

点击App返回应用程序

(… … ->) onRestart -> onStart -> onResume (-> … … )

结束语

本篇主要介绍了activity的生命周期以及其回调函数的含义,并且具体分析了多种情形下回调函数的调用顺序。

这些回调函数不能直接调用,但是通过分析其特点,能帮助我们重写这些函数,以灵活实现业务逻辑。