正常情况下的生命周期:
Activity 启动–>onCreate()–>onStart()–>onResume()
点击 home 键回到桌面–>onPause()–>onStop()
再次回到原 Activity–>onRestart()–>onStart()–>onResume()
退出当前 Activity 时–>onPause()–>onStop()–>onDestroy()
详细生命周期如下:
1.启动了一个 Activity,通常是 Intent 来完成。启动一个 Activity 首先要执行的回调函数是
onCreate(),通常在代码中你需要在此函数中绑定布局,绑定控件,初始化数据等做一些初
始化的工作。
2.即将执行 Activity 的 onStart()函数,执行之后 Activity 已经可见,但是还没有出现在前
台,无法与用户进行交互。这个时候通常 Activity 已经在后台准备好了,但是就差执行
onResume()函数出现在前台。
3.即将执行 Activity 的 onResume()函数,执行之后 Activity 不止可见而且还会出现在前
台,可以与用户进行交互啦。
4.由于 Activity 执行了 onResume()函数,所以 Activity 出现在了前台。也就是 Activity
处于运行状态。
5.处于运行状态的 Activity 即将执行 onPause()函数,什么情况下促使 Activity 执行
onPause()方法呢?
[1]启动了一个新的 Activity
[2]返回上一个 Activity
可以理解为当需要其他 Activity,当前的 Activity 必须先把手头的工作暂停下来,再来把
当前的界面空间交给下一个需要界面的 Activity,而 onPause()方法可以看作是一个转接
工作的过程,因为屏幕空间只有那么一个,每次只允许一个 Activity 出现在前台进行工
作。通常情况下 onPause()函数不会被单独执行,执行完 onPause()方法后会继续执行
onStop()方法,执行完 onStop()方法才真正意味着当前的 Activity 已经退出前台,存在
于后台。
6.Activity 即将执行 onStop()函数,在“5”中已经说得很清楚了,当 Activity 要从前台
切换至后台的时候会执行,比如:用户点击了返回键,或者用户切换至其他 Activity 等。
7.当前的 Activity 即将执行 onDestory()函数,代表着这个 Activity 即将进入生命的终结
点,这是 Activity 生命周期中的最后一次回调生命周期,我们可以在 onDestory()函数
中,进行一些回收工作和资源的释放工作,比如:广播接收器的注销工作等。
8.执行完 onDestory()方法的 Activity 接下来面对的是被 GC 回收,宣告生命终结。
9.很少情况下 Activity 才走“9”,网上一些关于对话框弹出后 Activity 会走“9”的说
法,经过笔者验证,在某个 Activity 内弹出对话框并没有走“9”,所以网上大部分这样
说法的文章要么是没验证,要么直接转载的,这个例子说明,实验出真知,好了,不废话
了,那么什么情况下, Activity 会走“9”呢?
10.当用户在其他的 Activity 或者桌面回切到这个 Activity 时,这个 Activity 就会先去执行
onRestart()函数, Restart 有“重新开始”的意思,然后接下来执行 onStart()函数,接着
执行 onResume()函数进入到运行状态。
11.在“10”中讲的很清楚了。
12.高优先级的应用急需要内存,此时处于低优先级的此应用就会被 kill 掉。
13.用户返回原 Activity。