大话Android 之activity生命周期

众所周知,Android四大组件里,最重要的就是activity了。而作为开发者,我们最应该关注的,当然少不了activity的生命周期啦。

说到activity生命周期,最好的方式当然是通过流程图来解释啦,下面是官方给的图:


这个一堆e文的流程图,怎么理解呢?可以理解为一部狗血的宫斗剧。

activity就像一个秀女一样,整个生命周期里充满了争斗与起伏。


“小秀女”activity的一生有四个状态:

1.“后宫佳丽三千人,三千宠爱在一身”(活动状态):住在毓秀宫(前台),得见天颜(用户),随时有可能被临幸(获得焦点);

2.“闻有美人新进入,六宫未见一时愁”(暂停状态):出来混,迟早要换,新人来到,旧人只能腾地方了,让出了毓秀宫(前台),但凭借以往的情谊,暂时还能见到天子(依然可见),只是夜夜空房,得不到雨露(不能获得焦点);

3.“今年欢笑复明年,秋月春风等闲度”(停止状态):人老珠黄,被赶入冷宫,难以见到圣上(不可见),更加没有被临幸的可能了(失去焦点);

4.“玄宗回马杨妃死,云雨难忘日月新”(销毁状态):香消玉殒,结束了悲惨的一生。


当然这四种状态并不是按线性一步步走下去的,这样怎么能体现出剧情的狗血呢?谷歌的“编剧”们给“小秀女”留了一些改变人生的剧情,当这些剧情发生,编剧们就可以趁机加上自己的剧情了:

onCreate(Bundle savedStatus)(选秀,activity创建时调被用):就和电视上演得一样,我们的“小秀女”想进宫(进栈,Android里面的activity都是在栈里面存放的,因此遵循后进先出的规则)必须得通过选秀,把自己打扮漂漂亮亮的让皇帝看,穿上新衣服、化化妆(一般在这个回调函数中加载ui初始化和数据初始化),展示点才艺(数据初始化),当然选秀一生只能参加一次了(该方法只会被调用一次),除非是轮回转世了(应用程序终止后,用户重新启动该activity);

onStart()(进宫,activity启动时被调用):进宫一般也只有一次,但有些特殊情况可能就有二进宫的机会,接下来就是面圣(获得onResume())了;

onRestart()( 传说中的二进宫,重新启动activity时被调用):戏剧化的二进宫,有可能是天子的回心转意(activity被销毁之前返回该activity,就像平时点击返回会回到上一页面一样);

onResume() (进宫面圣,获得焦点时被调用):欲面圣,先进宫,必然出现在onStart()之后,由于妆画得比较好,面圣后自然就是得宠了,就是前面说的活动状态;

onPause()(失宠,暂停activity时被调用):新人来了,过了蜜月期自然容易失宠,进入凄惨的暂停状态,有可能直接赐白绫三尺(用户直接结束当前应用进程),也有可能是打到冷宫(变得半透明,用户看得到,但不能操作,比如用户拉下状态栏的时候,半透明的状态栏下还是隐约看得到activity的界面的,更onCreate()一样,经常被重写,比如用户正在看视频,女朋友来电话了,我们就得帮他提前存好他的播放进度,等一个小时候后用户回来还得接着看),等待老死或寻找面圣的机会东山再起(用户返回原界面,onResume()方法被回调);

onStop()(人老珠黄,停止activity时被调用):老到天子都不愿意见了,进入凄风苦雨的停止状态,唯一的希望就是天子的回心转意(用户重新启动该activity,让其重新进入前台的用户可视状态,同时onRestart()方法会被调用);

onDestroy()(寿终正寝,activity被销毁时调用):主角要挂了,快杀青了,各部门都开始收拾东西了(用户点击退出或返回时,该方法被调用,activity被回收销毁),进入销毁状态。


好了,经过我的一番胡说八道,想必大家更加糊涂了吧,哈哈。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页