Android开发艺术探索--第一章生命周期和启动方式总结(1)
2016-08-18 10:45
459 查看
最近在拜读任主席的Android开发艺术探索,现在看了一半,再回头看前面的,感觉跟没有看一样,所以还是把知识点总结一下吧
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/35a9f396ec804664c6ee5fd1be7e05e1)
每个方法的具体作用就不说了,来看一下具体几种情况下回调顺序:
第一次启动,回调: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方法中尽量不要做重量级操作
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属性,具体属性可以看开发者文档。
第一节,生命周期分析之典型情况下生命周期分析
生命周期各个回调方法以及顺序每个方法的具体作用就不说了,来看一下具体几种情况下回调顺序:
第一次启动,回调: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属性,具体属性可以看开发者文档。
相关文章推荐
- Android开发艺术探索--第一章生命周期和启动方式总结(2)
- Android开发探索第一章 Activity生命周期及启动模式总结(一)
- Android开发探索第一章 Activity生命周期及启动模式总结(二)
- Android 艺术开发探索 第一章 Activity 的生命周期和启动模式观后感
- 【Android开发艺术探索读书笔记】 第一章 Activity的生命周期与启动模式
- Android开发艺术探索---第一章activity生命周期之自我总结
- Android开发探索第一章 Activity生命周期及启动模式总结(三)
- Android开发艺术探索--第一章Acitivity的生命周期和启动模式
- <<Android 开发艺术探索>> 第一章 Actiivty的生命周期和启动模式
- Android开发艺术探索---第一章activity启动模式之自我总结
- Android开发艺术探索笔记(一) Activity的生命周期和启动模式(1)
- Android开发艺术探索(一)Activity生命周期和启动模式
- 笔记一 Android开发艺术探索之Activity的生命周期和启动模式
- Android开发艺术探索---第一章intentFilter匹配规则之自我总结
- Android开发艺术探索阅读笔记之一:Activity的生命周期和启动模式
- Android开发艺术探索--Activity生命周期和启动模式
- Android 开发艺术与探究 第一章 Activity 的生命周期和启动模式
- 【读书笔记】【Android 开发艺术探索】第1章 Activity 的生命周期和启动模式
- Android开发艺术-第一章Activity的生命周期和启动模式
- Activity的四种启动模式--看Android开发艺术探索总结