Activity是四大组件之一,也是接触的最多的,一般来说Activity经常是与用户交互的界面。
一 典型情况
先看下google官网,其实已经很清楚了
再来个总结
- onCreate,正在被创建,一次,可以做初始化工作,比如setContentView来加载界面资源
- onStart 正在启动,可见了但是没在前台没获得焦点,无法与用户交互
- onResume 到前台获得焦点,可以与用户交互
- onPause 正在停止,可以做一些轻量级的操作不影响下一个Activity的onResume方法
- onStop 即将停止,Activity不可见
- onDestory 摧毁,可以做一些资源回收和释放的操作
- onRestart 正在重新启动。由stop触发。
最后,前六个都是比较好理解的,就是最后一个onRestart,我以前不太理解。这次看了下官方描述:
调用时机在stop方法的后面,并且当activity重新显示的时候调用,之后调用start和resume。
二 异常情况
2.1 系统配置改变
比如横竖屏切换下,如果不做特殊处理,activity会销毁到重新创建。系统会调用onRestoreInstanceState 来保存当前activity的状态,是onSaveInstanceState 里面的bundle对象,如果onSaveInstanceState不为空,就可以在onCreate里面进行一个重建。
另外,保存view和恢复view本质也是委托思想,当activity被意外终止,activity调用onSaveInstanceState来保存数据,会委托window,window再委托他上面的顶层容器,比如DecorView,顶层容器再来通知他的所有子元素来进行一个保存。
2.2 系统资源不足kill掉低优先级activity
优先级:前台activity > 可见但不处于前台 > 后台
若想横竖屏切换的时候不重新启动,可以对configChanges属性进行配置