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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值