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

来源:互联网 发布:java 初始化错误异常 编辑:程序博客网 时间:2024/05/16 10:03

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在最顶上的堆栈状况了。