Intent就是对将要执行的操作的抽象描述。Intent支持Android设备上任意两个可用的应用程序组件之间的交互,无论它们是哪个应用程序的一部分。这就把一个相互独立的组件集合变成一个互联的系统。
Intent最常用的一个用法是显式地(通过制定要加载的类)或隐式地(通过请求对一组数据执行某个动作)启动新的Activity。
Intent也可以用来在系统范围内广播消息。任何应用程序都可以注册一个广播接收器来监听和响应这些广播的Intent。这样就可以基于内部的、系统的或第三方的应用程序事件,创建事件驱动的应用程序。
Android使用广播Intent来公布系统事件,如网络连接状态或电池电量的改变。本地Android应用程序(如拨号程序和SMS管理器)可以简单地注册监听特定的广播Intent的组件,如来电或接收SMS消息并做出响应。使用Intent来传播动作--甚至在同一个应用程序内--是一种基于Android的设计原则。它鼓励组件之间的分离,允许无缝地替换应用程序元素。它还提供了一个简单的用于扩展功能模型的基础。
Android通常使用Intent实现一个界面到另一个界面的移动,它代表一个应用程序想要做什么。 Intent数据结构中最重要的两个部分是行动(Action)和数据(Data),其中, Action的典型值包括MAIN, VIEW, PICK, EDIT等, Data则表示URI。例如,要查看某个人的联系信息,可以使用VIEW操作创建一个Intent,并将数据设置为表示该人的URI.当Intent在Android组件间传递时,组件如果想告知Android系统自己能够响应和处理哪些Intent,就需要用到Intentilter对象。顾名思义, IntentFilter 对象负责过滤组件无法响应和处理的Intent,只将组件关心的Intent接收进来进行处理.Intentilter实行“白名单”管理,即只列出组件期望接收的Intent,但Intentilter 会过滤隐式Intent,显式的Intent则会直接传送到目标组件。Android组件可以有一个或多个IntentFilter, Intentilter 间相互独立,只需要其中一个验证通过即可。除了用于过滤广播的Intentilter 可以在代码中创建外,其他Intentrilter 必须在AndroidManifest.xml文件中声明。