Activity 声明周期中各个事件的执行时机

作者:lhq9220 来源:CSDN博客 日期:2018-1-23

1、从 Activity 的官方文档中能看到其生命周期为:onCreate、onStart、onResume  然后结束时候依次调用  onPause、onStop、onDestroy。
然后又分为:

entire lifetime:onCreate----onDestroy

visible lifetime:onStart----onStop

foreground lifetime:onResume----onPause

在我的程序里,首先我生成了一个 Activity,其处于 foreground,不论我调用 finish 还是点击 Back 键,默认都要去依次调用onPause -> onStop -> onDestroy。

而且每次新打开一个,也是都要默认调用onCreate -> onStart -> onResume。(因为这个是处在最上层的 Activity)

2、假如上面的例子是 B 生成了 A 这个 Activity,那么在生成 A 后,B 因为失去了 foreground 和 visible,会依次调用 B 的 onPause 和 onStop。然后当 A 结束返回后,会依次调用 onRestart、onStart、onResume。

3、 还有个函数叫做 onSaveInstanceState。这个怎么说呢,我的理解是当内存不足时候,系统会将处于 unvisible 状态的 Activity 进行一定的回收,也就是将这个类销毁。在销毁的时候会调用 onSaveInstanceState,我们书写自己的代码将必要的状态数据保存一下。是保存在一个 bundle 中的,如果我们退后又浏览到这个 Activity,就会调用 onCreate 去生成,但是传送的 Bundle 就是我们在 onSaveInstanceState 所使用的 bundle。这样就能节省一部分内存,在需要的时候再加载。

4、在 Android 上还有一个 home 键,当 B 生成 A 这个 Activity,现在 Back Stack 中栈顶是 A,当这个时候按 home 键的时候,只执行 A 的 onPause 函数,然后显示界面,可是当重新点击 B 这个图标时候,又回到 A 在最顶上的堆栈状况了。

相关文章