文档介绍:Intent-based Programming
Android的4种嫡系组件(即Activity、Service、IntentReceiver和ContentProvider)之间如何互相沟通呢?这4种嫡系组件都是由Android启动的,并不是组件之间透过直接呼叫而启动的。就像我们打手机去车行叫出租车,而不是直接到街道上叫车。我们送给行一个简讯一通电话,表明我们的「意图」(Intent),当车行经理接到此意图,就依据你的意图的内含条件而去挑选最合适的出租车,然后派遣它去接你。
「意图」(Intent)本身是定义为一个类别(Class),一个Intent对象表达一个目的(Goal)或期望(Expectation),叙述其所期望的服务或动作、与动作有关的数据等。Android则根据此Intent对象之叙述,负责配对,找出相配的组件,然后将 Intent对象传递给所找到的组件,Android的媒婆任务就完成了。
因此,Intent对象扮演着媒体中介的角色,提供「Client组件à Android à Server组件」之间互相沟通的相关信息,实现了Client组件与Server组件之间『不知而亦能用』之效果,这又称为疏结合(Loosely-coupled)效果。其创造了Server组件抽换的自由度,这又称为PnP(Plug and Play)。
兹以下图为例,Activity主要是提供UI画面来与User进行互动,两个Activity之间的直接互动较少。其它如ContentProvider则常是为Activity等提供服务的。所以Activity发出Intent对象委托Android挑选到适当的ContentProvider对象(并且将Intent对象传递给ContentProvider对象)之后,通常会透过ContentProvider接口而呼叫ContentProvider的各项服务或功能。
 
 
 
在此图所示的范例里,当我们在一个订单列表