Android之Activity生命周期

每一个Activity 都是一个原子,那么每一个优异的Android 应用肯定是建立于对原子的优异管理之上的。如果要做到这一点就不得不深入的了解Activity 的生命周期,并且通过深入的分析来一窥Android 本身的设计。本文尝试从三方面来解析 Activity 的生命周期相关的知识。

1.介绍


所有的 Activity 都经由栈来管理,管理栈可以是一个也可以是多个,在这样一个数据结构下,Activity 的每个实例,从创建到销毁,粗略来讲,有六个状态:

1)Created:刚刚完成一些初始化操作, Activity 未可见。

2)Started:Activity 可见,但还在还没出现在前台。

3)Resumed:Activity 可见,且在前台,可视,可接受输入,可执行代码

4)Paused:部分可视,不可接受输入,不可执行代码(即窗口不在最前,例如有提示框弹出)

5)Stopped:不可视,不可接受输入,不可执行代码

6)Destroyed:该Activity 实例销毁

其中(“ Created ”和 “Started ”)是瞬态,系统会通过调用下一个生命周期回调方法从这些状态快速移到下一个状态。也就是说,在系统调用 onCreate() 之后,它会快速调用 onStart(),紧接着快速调用 onResume()[1]

 

2.回调

概要下:

1)当第一次调用一个Activity就会执行onCreate方法。

2)当Activity处于可见状态的时候就会调用onStart方法。

3)当Activity可以得到用户焦点的时候就会调用onResume方法。

4)当Activity被遮挡住的时候就会调用onPause方法,遮挡结束会返回用户获取焦点状态的onResume方法。

5)当Activity处于不可见状态的时候就会调用onStop方法。

6)当Activity没有被销毁的时候重新调用这个Activity就会调用onRestart方法。

7)当Activity被销毁时会调用onDestory方法。

3.深入

activity的生命周期皆是回调函数实现的,android中的事件处理机制其一就是回调,线程方面的异步任务、loader、hanlder等都是基于回调的,等等。可见android的其一根本思想就是回调,需要你来参与时,回调用相关的回调方法,你来填充。可以说回调的思想浸润与android设计的方方面面,android开发中几乎带有on的方法都是回调方法。

1)什么是回调

你到一个商店买东西,刚好你要的东西没有货,但你不可能一直等着,你还有其他事要做,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件[3]

2)为什么要引入回调

我们需要模块间的协作,同时我们又厌恶的摒弃模块间你中有我我中有你的暧昧关系那如何生成系统呢,答案是函数指针(不一定是函数指针)也就是使用回调的方式如果一个对象关心另一个对象的状态变化,那么,给状态的变化注册回调函数,让它通知状态的改变,这样在封装了模块变化的同时,实现了模块间的协作关系另辟独径的给对象解耦[4]
[1] http://www.jianshu.com/p/4ed3a9f190f1activity两种情况下的生命周期分析

[2] http://www.mamicode.com/info-detail-941184.html安卓开发笔记——关于Activity生命周期的一些事情

[3] https://www.zhihu.com/question/19801131回调函数(callback)是什么?

[4] http://blog.csdn.net/a910626/article/details/45920893浅析android系统设计中的回调思想

posted @ 2017-11-08 19:08  夏洛克卷  阅读(86)  评论(0编辑  收藏  举报