![](https://csdnimg.cn/release/download_crawler_static/87199944/bg6.jpg)
跳转到一个其他的Activity。不过和网页跳转稍有不同,Activity之间的跳转可
以有返回值,例如,在Activity A 跳转到Activity B 后,那么当Activity B运
行结束时,可能会返回给Activity A 一个值。在多个Activity 交流的过程中,
这种返回机制是相当实用的。当用户进入一个新的屏幕时,之前的屏幕会转入暂
停状态,并且保存在历史堆栈中。正是由于历史堆栈的存在,用户可以通过返回
操作,返回到之前打开过的所有屏幕。Android默认的是将应用程序从开始到当
前的每一个屏幕都保存到堆栈中,不过与此同时,Android还提供了很方便的机
制,让开发人员自定义某个屏幕是否需要保存到历史堆栈。Activity 的跳转实
现,必须借助于Intent 类。因此Intent 在Android 应用中占据的地位是极其重
要的。简单来说,一个Intent 就是对一个将要执行的操作请求的抽象描述。
Intent 的描述,主要包含有两个数据结构:动作(action)和动作对应的数
据(data)。动作有很多种,系统中最常见的动作类型有:MAIN(表明该Activity
是应用程序的入口)、VIEW、PICK、EDIT 等等;而动作对应的数据一般以URI 的
形式表示,例如:要查看某一个网页,则需要创建Intent,它的动作类型为
VIEW,对应的数据应该是该网页的网址。值得一提的是,有一个类叫IntentFilter,
它是Intent的相关类。如果说Intent是一个有效的操作请求,那么一个
IntentFiler则用于描述一个Activity(或者Intent Receiver等)能够接收哪些
Intent的请求。比如系统浏览器的Activity用于查看某一个网页,那么它用于接
收Intent的IntentFilter,要定义类型为VIEW的动作并且能够过滤表示一个网页
网址的
URI。通常IntentFilter要被注册在AndroidManifest.xml文件中。Activity
之间的跳转正是通过解析各种Intent 来实现的。例如一个Activity 调用
startActivity(intent)方法,希望跳转到其他的Activity 时,会触发系统的
Intent 解析过程,在所有安装的应用程序中已注册的IntentFilter 中查找,并
最终挑选出能够匹配Intent 的Activity。然后这个新的Activity 因为接收到
Intent 的请求而开始运行,完成Activity 的跳转。这种跳转机制提供了两个关
键好处:
(1)操作请求被Intent 封装起来,方便Activity 重复利用。
(2)相互跳转的多个Activity 之间实现了松耦合。只要IntentFilier 保持