Android活动的生命周期(Life Cycle Of Activity)

对于Android程序员来说,掌握活动的生命周期非常重要,当我们深入了解活动的生命周期以后,才能写出更流畅的APP,让我们更好的去分配资源,让应用程序有更好的用户体验。

我们首先来说一下,Android程序是用什么来管理活动的。

Android使用任务(Task)来管理活动,一个任务就是一组存放在栈里的活动的集合,这个栈也被称作返回栈。那什么是栈呢?栈是一种后进先出的数据结构。我的理解是,栈好比是一个容器,我们要依次往里面放置内容物(数据,Activity),而先放进去的,我们是必须要把最上面的(最后放进去的)先拿走,才能看到或者拿到。

默认的情况下,当我们启动一个新的Activity的时候,这个新启动的活动就会被压入返回栈中,处于栈的顶部,我们只能看到处于栈顶的这个活动,当我们按下Back返回键或者Finish()掉当前栈顶的活动时,它就会退出栈顶,之前被放入的活动(没有被Finish()掉)就会成为栈顶元素,呈现在我们面前。下面我们用一幅图来说明这个问题。

返回栈

看完栈,我们再看一下活动的状态。《Android第一行代码》(郭霖著)中说,活动在其生命周期中最多可能会有四种状态:

运行状态:当活动位于栈顶时,就处于运行状态,系统最不愿意回收这样的活动,回收会导致很差的用户体验。个人认为就是程序闪退,崩溃等。

暂停状态:当活动不再处于栈顶,但是对用户依然可见时。不是说在栈顶的元素才对用户可见吗?这是因为不是每一个活动都是覆盖整个屏幕的,一些对话框形式的活动就只会占用一部分而已,比如Dialog。系统也是不愿意回收处于暂停状态的活动的,除非在万不得已的情况下。

停止状态:活动不再处于栈顶,并且完全不可见的时候,就会处于停止状态。但系统会保存相应的状态和变量,但是当内存不足时,还是会回收这一类的活动的。

销毁状态:当活动从栈中移除以后就变成了销毁状态。系统最乐意回收这类活动,以此来保证充足的内存。

我们再来用实际的例子来看一下活动的生存期以及生存期的转换。我会新建一个工程,用打印日志的方式来展示这种转换。先看一下经典的活动生命周期图。


Activity生命周期图

下面来用实例展示

新建一个Android工程,启动的Activity我起名为FirstActivity,然后新建另外两个Activity,SecondActivity和ThirdActivity。(详情见附图)


目录结构

然后为每个Activity重写它们的生命周期的方法,并且在方法里面打印Activity所处的状态。打印的时候,我们统一在打印的信息前加上字符串“Test-”,这样就可以在控制台里面清楚的看到执行不同的操作时,全部的活动执行生命周期的顺序。(附图)


重写方法

然后我们在每个活动的Layout上面添加一个文本控件和一个按钮,用来跳转。

从第一个活动跳转到第二个活动时,我们只是跳转,不让第一个活动finish()掉,但是从第二个跳转到第三个时,我们让第二个活动finish()掉,下面我们来看一下活动的生命周期是怎么执行的。


FirstActivity按钮点击事件的处理


SecondActivity按钮点击事件的处理

1.启动程序,然后退出


FirstActivity

2.启动程序,点击按钮跳转到SecondActivity


跳转到SecondActivity


3.接着从SecondActivity跳转到ThirdActivity

跳转到ThirdActivity

4.在ThirdActivity中,点击物理的返回按钮


从ThirdActivity返回

5.按Home键


按压Home键

其他不同的情况请自行探索。

好啦,今天就到此为止啦。

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

推荐阅读更多精彩内容