当用户打开新的一个屏幕时,上一个进行的屏幕进会暂时暂停,并且被保存到历史堆栈里,当
要重新使用上一个屏幕时,用户可以通过返回到历史堆栈中去找到上一个屏幕。如果确定不再使用
该屏时,用户可以选择将其从历史堆栈中删除。一般默认情况下,从主屏幕到每一个应用的运行屏
幕都会被 Android 保留。
Intent 负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,负责找到对应的组
件,将 Intent 传递给调用的组件,并完成组件的调用。在实现屏幕与屏幕之间的移动, Android
就是使用了 Intent 这个类。有两个部分在 Intent 的描述结构中显得非常重要:动作,以及动作所
对 应 的 数 据 。 我 们 所 知 道 比 较 突 出 的 动 作 类 型 有 : MAIN ( activity 的 门 户 )、
EDIT、PICK、VIEW 等。用 URI 的形式对动作所要对应的数据进行描述:比如用户需要查看某个
人的联系方式,则用户需要创建一个以 VIEW 的 Intent 动作类型,和一个 URI 来表示这个人。
IntentFilter 是一个与之有关系的类。与 Intent 类相比较起来,IntentFilter 是一个有效的动
作请求。当要知道一个一个 activity(或者 Intent Receiver)能够操作哪些 Intent 时,则需要一
个 IntentFilter 来进行描述。当某一个动作需要显示一个人的联系方式时,我们要首先定义一个
IntentFilter,这需要在 AndroidManifest.xml 中对它进行声明,所以这个 IntentFilter 才会知道
如何去表示一个人的 URI 和处理 VIEW 动作。
当我们操作从一个屏幕跳转到另一个屏幕时,系统通过解析相关各种 Intent
[7]
,是屏幕间的切
换顺利完成。当进行向前导航操作时,startActivity(Intent myIntent)这个方法被 activity 所选
用。然后,在同时定义的 IntentFilter 中系统会在所有已安装的应用程序中查找,最后系统找到
myIntent 的 Intent 对应最匹配的 activity。在接收到 myIntent 的通知后,新的 activity 便会立
即开始运行。当调用了 startActivity 方法,同时在将要触发解析 myIntent 的动作时,这个机制
有两个关键好处:
A、只要是以 Intent 形式产生的一个请求,即使是从其他组件中产生,Activities 也能够对其
进行重复利用。
B 、 一 个 新 的 Activity 可 以 在 任 何 时 候 替 换 原 先 的 Activities , 前 提 是 有 一 个 相 同 的
IntentFilter 出现。
2、Service
Service 是运行在后台的一段代码。它可以运行在它自己的进程,也可以运行在其他应用程序
进程 的 上 下文 ( context ) 里 面 , 这 取 决 于自 身的 需要 。 其 它 的 组 件 可 以 绑定 到一 个 服 务
(Service)上面,通过远程过程调用(RPC)来调用这个方法。例如媒体播放器的服务,当用户
退出媒体选择用户界面,仍然希望音乐依然可以继续播放,这时就是由服务 (service)来保证当
用户界面关闭时音乐继续播放的。
它跟 Activity 的级别差不多,但是他不能自己运行,需要通过某一个 Activity 或者其他
Context 对象来调用, Context.startService() 和 Context.bindService()。