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

相关推荐

  1. Android学习笔记:activity生命周期

    2024-07-21 15:32:01       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 15:32:01       138 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 15:32:01       152 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 15:32:01       128 阅读
  4. Python语言-面向对象

    2024-07-21 15:32:01       140 阅读

热门阅读

  1. 网站工作原理详解

    2024-07-21 15:32:01       30 阅读
  2. 【Golang】你真的学会切片了吗?

    2024-07-21 15:32:01       27 阅读
  3. Emacs vs IDE:用Emacs写程序真的更方便吗?

    2024-07-21 15:32:01       33 阅读
  4. libevent版本和日志相关接口

    2024-07-21 15:32:01       29 阅读
  5. 编写一款2D CAD/CAM软件(二十一)生产ASCII ART Logo

    2024-07-21 15:32:01       30 阅读
  6. 贝叶斯实现拼写检查器

    2024-07-21 15:32:01       28 阅读