现在的位置: 首页 > 综合 > 正文

intents对象说明

2012年01月27日 ⁄ 综合 ⁄ 共 1549字 ⁄ 字号 评论关闭
文章目录

Android 的4种组件(即Activity、Service、 IntentReceiver和ContentProvider)之间如何互相沟通?这4种组件都是由Android启动的,并不是组件之间直接调用而启动的。如果我们把Activity比作积木的话,那么Intent好象是胶水,把不同的积木粘起来,构成我们搭建的房子。就像我们打电话到出租车公司叫计程车,而不是直接到街道上叫车,我们给出租车公司打电话,表明我们的意图(Intent),当服务员接到此意图,就依据我们的意图去挑选最合适的计程车,然后派遣它来接我们。

在Android的官方API里边对Intent是这样定义的:An intent is an abstract description ofan operation ot be perfrormed。一个Intent就是一次对将要执行的操作的抽象描述。意图(Intent)本身是定义为一个类别 (Class),一个Intent对象表达一个目的(Goal)或期望(Expectation),叙述其所期望的服务或动作、与动作有关的资料等。 Android则根据此Intent物件之叙述,负责配对,找出相配的组件,然后将Intent物件传递给所找到的组件,Android系统的任务就完成了。Intent Object主要有7部分组成:
1. Component name:说明当前Intent Object会触发的component的子类类名;
2. Action:说明当前需要执行的动作,不同的action面对不同的component;
3. Data:根据不同的action说明不同的数据信息,使用URI描述,URI结构说明请参考Android 应用程序之间数据共享—ContentResolver
4. Type:对数据信息类型的描述;
5. Category:提供额外的信息说明当前Intent Object会触发的component的类型;
6. Extra:额外需要通过intent传递给component的信息,数据结构类似与map;
7. Flags:不同的标志,比如FLAG_ACTIVITY_NEW_TASK,说明创建activity时创建一个新的Task,并将创建后的Activity包含到其中;

inetent

在此图所示的范例里,当我们在一个订单列表画面(如Activity-1),点选某个订单之后,希望能够呈现出此订单的采购细项画面(如 Activity-2)。此时,Activity-1需要发出一个Intent物件,这个Intent物件说明了意图:包括“查找”(Get)动作、订单 ID等资料,然后呼叫Activity父类别的startActivity (Intent intent)函数,将此Intent物件传送给Android。而Android会根据此Intent物件中的叙述,与 AndroidManifest.xml所叙述的各组件类别之条件相比较,找出与此Intent叙述相配的组件(如Activity-2),然后 Android将该Intent物件递交给它,于是Activity-2会根据此Intent物件之叙述而执行相应的动作。

因此,Intent物件扮演着媒体仲介的角色,提供组件之间互相沟通的相关资讯,实现了Client组件与Server组件之间『不知而亦能用』之效果,这又称为疏结合(Loosely- coupled)效果。其创造了Server组件抽换的自由度,这又称为PnP(Plug and Play)。

总结说明

以上只是以一种抽象的方式,说明了什么是Intent、Intent起到的作用,至于比较详细的说明只有到
Intents and Intent filters去看了,或者到Intent Class View中去看Intent是具体如何实现的!

抱歉!评论已关闭.