我对Android Activity的生命周期是这样理解的

世界上所有存在的物质都有生命周期,比如人类,出生、儿童、青少年,壮年,老年、死亡,Android 的Activity组件也是一样也有生命周期,分为Oncreate、OnRestart、Onstart、OnResume,Onpause,OnStop,OnDestroy,是不是很多,其实里面也有配对的,就像出生于死亡一样,没有出生就没有死亡,,另外我们人类不可能一得病就死亡,而是通过身体自行修复或者看医生修复;具体我是这样理解的;

一、正常情况下Activity生命周期是这样运转的___没有生病的状态下:

(1)Oncreate :计算机语言里面叫创建,我是结合人类生命周期理解的叫“出生”,有生就有死,OnDestroy就是死的计算机语言里加销毁,也就是释放资源,用户关闭当前程序会发生,所以Oncreate 与OnDestroy是配对的,没有Oncreate就没有OnDestroy;

(2)OnRestart 计算机语言里面叫重新启动,也就是Antivity不可见变为可见时需要调用,”可见”指的是前台客户端能看到应用程序的界面,就像我们打开EXCEL,程序先进入栈里启动后台EXCEL服务,启动完成之后我们用户能看到的界面,有时我们正打开EXCEL界面打开完了,马上关闭那么自然就有了OnPause计算机语言里面叫正在停止,一个是启动,一个是停止因此OnRestart 与OnPause是配对的,执行完Onpause,紧接着发生Onstop;因此程序到OnPause时可以做一些存储数据,这样用户可能按错了可以还原数据;

(3)Onstart:计算机语言里面叫后台启动,也就是Activity后台服务启动,但是界面没有显示在客户端,对应的有停止Onstop,也就是Activity后台服务停止准备回收资源的状态,所以Onstart与Onstop是配对的,可以理解为后台Activity服务已经启动,与Activity后台服务被停止;

(4)OnDestroy:计算机语言里面叫销毁,回收资源或者理解为应用程序死亡。

二、得病了自动修复Activity生命周期会调用onSaveInstanceState OR onRestoreInstanceState,运行情景如下:

(1)系统配置发生改变导致Activity重建重建过程中使用onSaveInstanceState OR onRestoreInstanceState

当我们按Home键、锁屏、屏幕旋转、重新新建Activity时系统将默认状态下调用onSaveInstanceState保存当前数据,通过onRestoreInstanceState来恢复数据这个就在Onstart生命周期之后会发生的;

(1)系统内存不足导致优先级低的Activity被杀死—使用onConfigurationChange方法来不使用数据存储于恢复的函数做特殊处理;

优先级就不用描述了正在跟用户交互的Activity优先级很定比正在执行的Onstop优先级要高,系统默认为一个Activity杀死之后自动创建,但是我们使用configChanges来做一些特殊处理,具体configChange项目的属性及值得自行搜索;

总结:7个生命周期中除了OnDestroy之外其他生命周期会循环利用,比如我们电脑上开了好多应用程序;比如:办公软件、微信、QQ、酷狗音乐,直到你不关闭都不会发生OnDestroy生命周期,按照时序循环发生OnRestart、Onstart、OnResume,Onpause,OnStop生命周期。至于假设用户当前Activity 为A,若用户打开新的Activity B,那么B的OnRestart和A的Onpause哪个先执行呢?答案是先执行完A的Onpause,在执行B 的Activity B,无论从多线程角度考虑还是拿到现实生活先要执行A,要不然公平在哪里是吧,具体程序调用过程要看Android源码,笔者不在这里描述,若有修改的地方大家批评指正,感谢您阅读到这里,谢谢大家!

猜你喜欢

转载自blog.csdn.net/dunzhuqujie/article/details/80901806