Android中Activity生命周期详解

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属性进行配置

9.15补充

  • 极端下activity可能从onPause到onResume,不走onRestart
  • 返回如果是透明activity或对话框,不会回调onStop
  • 返回onPause -> onStop -> onDestroy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值