Activity 生命周期 变化

前言

    金三银四的季节到了,很多朋友都出去开始了自己的另一份职业生涯。在面试的时候,估计也会被问些
 Android的基本问题。最常见的就是Activity的生命周期,Handler的原理,以及View的事件分发机制。
 这里估计又得朋友就要说了,我们做项目的时候,没怎么用到Activity的生命周期啊。最多也就是在
 onCreate()里做一些初始化的操作。在onDestroy()里做一些解绑的操作,比如EventBus的解绑。也几乎
没用到Handler啊,更别说View的事件分发了。在这里我想告诉这些朋友,这些都是基础,应该懂的知识就要
学习。毕竟现在Android程序员那么多,想要脱颖而出就要比别人懂得多。好了废话那么多,接下进入正题!

生命周期

    我们看看源码中怎么描述这几个生命周期方法的。
  1. onCreate和onDestroy
    onCreate和onDestroy.png
    一个Activity的完整生命周期发生在第一次调用onCreate()直到调用onDestroy()之间。Activity将在onCreate()里设置所有的状态。在onDestroy()里释放剩余的资源文件。例如如果有一个线程运行在后台,正在从网络上下载数据。他可能创建这个线程在onCreate(),停止这个线程在onDestroy()
  2. onStart和onStop
    onStart和onStop.png
    Activity可见的生命周期,发生在onStart()onStop()这两个方法之间。在这期间用户可以看到Activity在屏幕上,尽管它可能不在前台并且没办法和用户交互。在这两个方法中间可以维护这个Activity展示给用户的一些资源。例如,你可以注册一个广播在onStart()方法用于监控你的UI的变化。你可以在onStop()中解绑,当用户长时间没有看你展示的界面的时候。onStart()和onStop()方法能够被多次调用,当Activity变得可见或者隐藏的时候。
  3. onResume和onPause
    onResume和onPause.png
    Activity前台生命周期,发生在onResumeonPause方法之间。在此期间,Activity在其他Activity的前面,并可以与用户交互。一个Activity可以经常往返于resume状态pause状态之间。例如,当设备进入睡眠状态时,或者当一个Activity结果被交付时,或者当一个新的意图被交付时。因此这些方法中的代码应该是相当轻量级的。

详解

为什么要把这些方法在源码中的解释写一遍呢,因为很多人只知道这几个生命周期的顺序,却不知道他们具体是要
做什么的。还有的初学者,只会在onCreate方法里操作,其它的也不管。所以把源码中的注释拿出来想让大家知道,
具体作用。
Activity生命周期
  • onCreate:当Activity第一次创建时调用的方法,一般做布局加载,数据初始化的操作 。整个生命周期只执行一次!

  • onStart: 当用户可以看到Activity时调用。这时Activity已经可见,但是没有出现在前台,无法和用户交互。相对应的是onStop()方法。通过onResume方法,使Activity可以与用户交互。通过onStop 方法,使Activity隐藏,即不可见!

  • onResume: 在屏幕可见,并且可以和用户进行交互。此时,该Activity位于活动堆栈的顶部。相对应的是onPause()。

  • onPause:当系统即将恢复一个以前的Activity的时候调用。这个通常适用于提交未保存的持久性数据,停止动画和其他可能消耗CPU的东西,等等。这个方法的实现必须非常快,因此不适用于耗时操作,比如网络操作或者数据库操作。

  • onStop:当前Activity不再对用户可见时调用,相对于onPause,可以处理稍微重量级的回收工作,同样也不能做耗时操作。

  • onRestart:当Activity处于onStop不可见状态时。重新进入该Activity,会调用onRestart方法。将不可见的Activity执行onStart方法,从而变成可见状态!例如,当你打开一个Activity后,按Home回到桌面,这时执行了,onPause和onStop方法。再次回到这个Activity时,就会执行该方法。

  • onDestroy:生命周期中的最后一个方法,只执行一次。可以做一些回收工作和资源的释放。

几种情况

针对一个特定的Activity。分析下他的生命周期

  1. Activity的第一次启动,直到我们可以正常交互,分别执行了,onCreate,onStart,onResume
  2. 打开一个新的Activity或者按Home键回到桌面时。分别执行了,onPause,onStop。这里有一种特殊情况,就是新的Activity为透明主题时。之前的Activity不会执行onStop。因为我们对于onStop的定义是,可见,但是不处于前台。但是当我们
  3. 重新返回这个Activity。分别执行了,onRestart,onStart,onResume。
  4. 当退出当前Activity。onPause,onStop,onDestroy。
    有的人可能要问了,假如我打开了一个Activity A。这时候我在打开一个 Activity B。那么这两个Activity的生命周期的执行顺序是什么呢!先执行,A的onPause,再执行B的onCreate,onStart,onResume,之后在执行A的onStop。当然之前也提到了,当B的主题为透明时。A不会走onStop方法。相应的由于没有走onStop方法,所以从B返回A的时候,直接从onPause,返回onResume方法!这是一种特殊情况!具体如下图!


    Activity.gif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容