android基础intent

Android之父曾经特别强调过:Android吸收了从COM构件体系到Web 2.0等技术体系的思想精髓,实现了多处技术创新,其中尤以应用程序级别的mash-up为最令他自豪的特性。

何谓Mush—up?

举个简单的例子:从一个网页上抓下一块XHTML 数据,再从另一个Web Services 那里获得一些XML数据,就可以把这两块数据mash-up起来,形成新的XML数据,并且这一数据可以在此被别人mash-up。

Android 调用activity 所提供的接口(服务),并不是直接调用,而是借助一个叫做Intent 的机制实现的。所谓intent 就是对于服务的调用请求。与其他技术体系不同的是,Android可以无须明确地指定要那个组(activity)来满足自己的调用请求,而是可以要求系统根据它的要求,自动选择一个能够满足要求的activity 来提供所需的服务。

每一个activity 都可以对外提供一系列的服务,这些服务以Intent-filter 的形式对外公开,并提交给系统进行注册。所谓intent-filter,就是一个activity 的能力列表。例如,一个用于编辑短信正文的文本编辑器activity 应通过AndroidManifest.xml文件中的<intentfilter>元素向系统注册,表明activity具有EDIT 和VIEW文本数据的能力,如果有另一个客户要求EDIT和VIEW一段文本数据,则系统可以调用本activity 予以满足。Activity 本身既是提供服务的组件,也可以是组件的客户。
了解了这么多谈谈Intent的 定义:intent 就是一次对将要执行的操作的抽象描述!!

何谓操作的抽象描述?
1. 对动作的描述 action
2.对这次动作相关联的数据进行描述--data
3.对数据类型的描述 --type
4.对执行动作的附加信息进行描述--category
5.对一切附加信息的描述--extras
6.对目标组件的描述--component

这就是对intent机制最棒的描述,其对事物行为抽象值得借鉴!

 

5继承与andorid。content。intent
已知的子类:labledIntent

intent是目的:是一个抽象的描述对于你的执行动作之前,他可以用于在你的startActivity去显示你的activity,
还可以用在broadcastIntent去送一个broadcastreceiver的容器,或这是startService等等。

Intent()
产生一个新的intent
Intent(Intent o)
从intent O中拷贝一个intent到你的intent中
Intent(String action)
由给定的action创建一个intent
Intent(String action, Uri uri)
Create an intent with a given action and for a given data url.
创建一个intent用给定的action和给定的数据url
Intent(Context packageContext, Class<?> cls)
Create an intent for a specific component.
创建一个intent为特殊的容器
Intent(String action, Uri uri, Context packageContext, Class<?> cls)
Create an intent for a specific component with a specified action and data.
综上。。。。

 

intent要处理的组件名,也就是你要传递给的组件的名称

2.action表示你的行为,

3data表示一个Uri也就是统一资源定位符,也就是你的请求的数据的实际的表示。

4.Extra是为了你的传递数据的一个bundle,其实底层就是i一个bundle,而bundle是一个hashMap<String ,Object>.所以你的方法也就是一个hashMap的方法。你也可以用getExtras来获取一个Bundle对象。

5.Flag是表示你的请求的是否是属于当前的activity队列。


intent vFilter:
关于一个IntentFilter,也就是说你的所有的intent filter都会进行一个注册和使用,你的程序可以得到所有的intent Filter关联的activity的一些组件,那么这样你就会去从一个系统中得到这些组件了。

intent filter就相当于是一个注册注册表的行为配置。
packagemanager的一组的query就是为了查找这些注册的intent的

<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.EDIT" />
<action android:name="android.intent.action.PICK" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.dir/vnd.google.note" />
</intent-filter>
这样的四个匹配的规则,你只需要匹配一个就可以了。但是如果你有多个那么,就会出现时是否为子集的可以过滤。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。