WEB开发网
开发学院手机开发Android 开发 Android Intent 解释 阅读

Android Intent 解释

 2010-05-31 14:49:00 来源:WEB开发网   
核心提示:理解Intent的关键之一是理解清楚Intent的两种基本用法:一种是显式的 Intent ,即在构造Intent对象时就指定接收者;另一种是隐式的 Intent ,Android Intent 解释(3),即Intent的发送者在构造Intent对象时,并不知道也不关心接收者是谁,这些类别必须全部 出现在组建的类别列

理解Intent的关键之一是理解清楚Intent的两种基本用法:一种是显式的 Intent ,即在构造Intent对象时就指定接收者;另一种是隐式的 Intent ,即Intent的发送者在构造Intent对象时,并不知道也不关心接收者是谁,有利于降低发送者和接收者之间的耦合。

对于显式Intent,Android不需要去做解析,因为目标组件已经很明确,Android需要解析的是那些隐式 Intent,通过解析,将 Intent映射给可以处理此Intent的Activity、IntentReceiver或Service。

Intent解析机制主要是通过查找已注册在AndroidManifest.xml中的所有IntentFilter 及其中定义的Intent,最终找到匹配的Intent。在这个解析过程中,Android是通过Intent的action、type、 category这三个属性来进行判断的,判断方法如下:

* 如果Intent指明定了action,则目标组件的IntentFilter的action列表中就必须包含有这个action,否则不能匹配;

* 如果Intent没有提供type,系统将从data中得到数据类型。和action一样,目标组件的数据类型列表中必须包含 Intent的数据类型,否则不能匹配。

* 如果Intent中的数据不是content: 类型的URI,而且Intent也没有明确指定它的type,将根据Intent中数据的scheme (比如 http: 或者mailto:) 进行匹配。同上,Intent 的scheme必须出现在目标组件的scheme列表中。

* 如果Intent指定了一个或多个category,这些类别必须全部 出现在组建的类别列表中。比如Intent中包含了两个类别:LAUNCHER_CATEGORY 和 ALTERNATIVE_CATEGORY,解析得到的目标组件必须至少包含这两个类别。

Intent-Filter 的定义

一些属性设置的例子:

< action android:name="com.example.project.SHOW_CURRENT" / >

< category android:name="android.intent.category.DEFAULT" / >

< data android:mimeType="video/mpeg" android:scheme="http" . . . / >

< data android:mimeType="image/*" / >

< data android:scheme="http" android:type="video/*" / >

完整的实例

< activity android:name="NotesList" android:label="@string/title_notes_list" >

< intent-filter >

< action android:name="android.intent.action.MAIN" / >

上一页  1 2 3 4 5 6 7  下一页

Tags:Android Intent 解释

编辑录入:coldstar [复制链接] [打 印]
赞助商链接