Android开发艺术探索--第一章生命周期和启动方式总结(1)

最近在拜读任主席的Android开发艺术探索,现在看了一半,再回头看前面的,感觉跟没有看一样,所以还是把知识点总结一下吧

第一节,生命周期分析之典型情况下生命周期分析
  • 生命周期各个回调方法以及顺序
    生命周期图
    每个方法的具体作用就不说了,来看一下具体几种情况下回调顺序:
  • 第一次启动,回调:onCreate -> onStart -> onResume
  • 当用户打开新的Activity或者切换到桌面时,回调:onPause -> onStop,如果新打开的Activity是透明主题的话,那面当前的Activity不会回调onStop
  • 当用户再次回到原Activity时,回调:onRestart -> onStart -> onResume
  • 当用户按下back键回退时,回调:onPause -> onStop -> onDestory
  • 当Activity被系统回收后再次打开,生命周期的回调方法过程和第一次一样,不过会有个别的方法被调用(onRestoreInstanceState,下面再说这个问题)
  • 通过Activity是否可见,onStart和onStop对应;Activity是否可操作,onPause和onResume对应
  • 新打开Activity时,当前Activity会先调用onPause方法,然后新Activity会onCreate -> onStart -> onResume,这个时候旧Activity才会调用onStop方法,所以如果要新打开的Activity能尽快的显示在用户眼前,在onPasue方法中尽量不要做重量级操作
第二节生命周期分析之异常情况下生命周期分析

  异常情况就是Activity被系统kill掉的情况,被kill掉也分两种情况
1. 资源相关的系统配置发生改变导致Activity被杀死并重新创建,这种情况的典型就是横竖屏翻转
2. 内存资源不足导致低优先级的Activity被杀死
  这两种情况下生命周期的回调方法一致,这里再引入两个回调方法:onSaveInstanceState和onRestoreInstanceState,当Activity被异常情况下销毁的时候,onPause、onStop、onDestory都会被调用,并且系统会调用onSaveInstanceState来保存当前Activity的状态,这个方法会在onStop之前调用,跟onPasue没有固定的时序关系(这个坑我踩过),正常退出Activity的情况下是不会调用这个方法的。当Activity被重新创建后,系统会调用onRestoreInstanceState,并把onSaveInstanceState方法里保存的bundle对象作为参数传递给onRestoreInstanceState和onCreate方法,onRestoreInstanceState在onStart方法之后调用。
  我们可以自己在这两个方法中保存和恢复我们自己的数据,系统也会自动为我们做一定的恢复工作,Activity的视图结构,文本框的输入数据,ListView的滚动位置等,这些View相关的状态系统都能默认为我们恢复,这些View都实现了这两个方法,当需要恢复数据的时候,Activity会调用onSaveInstanceState去保存数据,然后委托Window保存数据,Window再委托它上面的顶层容器去保存数据,顶层容器再去通知它的子元素去保存数据,整个数据的保存过程就完成了。


系统配置中有很多内容,如果当某项内容发生改变后,我们不想系统重新创建Activity的话,需要在清单文件里面给Activity指定configChanges属性,具体属性可以看开发者文档。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值