您的位置:首页 > 移动开发 > Android开发

Android study(1)--Intent

2009-09-10 21:43 471 查看
Intent是Android OS的重要对象,它用于协调各个组件并用来传递异步消息。Intent是一种运行时绑定机制,能够在程序运行的过程中连接两个不同的组件。通过Intent,每个应用程序可以向Android系统发送表达某种请求的消息,Android根据消息的内容选择恰当的组件来响应。

Intent包含6中基本信息,分别为:目标组件名称,Action(动作),Data(数据),Category(类别),Extra(额外信息),Flag(标志)。Intent分为显示Intent和隐式Intent。显示Intent是在目标组件名称中指定目标组件的包名和类名,Intent请求会直接发送给这个组件。由于不可能知道其他应用的类名及包名,所以显示Intent不可能用于不同应用程序,它只能在一个应用程序中传递消息。隐式Intent查找目标组件的方法是根据IntentFilter。每个Android基本组件(Activity,Service,BroadcastReceiver)都需要在AndroidManifest.xml中声明自己的IntentFilter,以描述这个组件可以接受的Intent请求。Android系统会根据Intent中的信息查找IntentFilter,看是否匹配,以确定接受Intent请求的组件。影响Android匹配的因素是Intent中的Action、Data、Category。

隐式Intent不需要目标组件的名称来激活该组件,这样可以应用于在不同应用程序之间传递消息。下面是我对于Intent机制的一种理解,不知猜的对不对。

在Android中,系统维护一个数据结构,用于描述每种Intent可以匹配的组件。可以采用

Hashtable<key Intent类型(Action), value 可以匹配的组件的列表>

这样就可以把不同类型的Intent映射为可以处理该Intent的组件。在每个应用程序安装时,系统搜索AndroidManifest.xml,根据每个组件的IntentFilter信息,调用Hashtable.put(IntentFilter.Action, 组件)把每个组件注册到系统中。Android就可以轻松的维护每个组件可以处理的Intent信息。当某个组件发出一个Intent请求时,Android系统会根据Intent的信息调用Hashtable.get(Intent.Action)得到所有与之匹配的组件列表,从而找到可以响应该Intent的组件。

正是由于隐式Intent的存在,才可以实现不同应用程序可以共享彼此的功能组件这是优势。一个应用程序要启动其他应用程序的一个组件时只要传递正确的Intent即可,从这一点上看Android系统是一个组件的集合,它的运行的基本单位是组件,而不是一个应用程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: