您的位置:首页 > 其它

关于Intent的使用

2015-12-03 21:46 155 查看

一、Intent对象的作用和构成

作用:

Intent对象是组件间通信信息的载体。它封装了调用组建提供的指令和数据,通过组建管理服务序列化传递给实现组件,实现组件可以利用这些信息完成所需要的功能。

构成:

Intent对象的作用都是通过她的实现和设计体现出来的。从数据构成来看,Intent类非常的简单,她并没有包含复杂的逻辑功能,只是包含着若干个数据项。

这里通过解析一句话来理解这若干个数据项

如果我吃饱了,我就去打篮球

Intent intent=new Intent(MainActivity.this,Activity2.class);


其中“我”代表着意图机制下的调用组件(MainActivity.this)

“打“代表着意图机制下的Action

”篮球“代表着Data

“球”代表着Type

“如果我吃饱了”代表了category

Action项

Action就相当于我们日常生活中的动作,动词,代表上面语句的“打”这个动作。

Action是一个字符串,可以调用Intent.setAction函数为Intent对象指定一个动作,也可以通过Intent.getAction函数读取Intent对象中的动作信息。为了保持动作的唯一性和实现的可扩展性。Action的命名格式遵循java包的命名规范。比如这里定义一个“吃”动作:

[code]com.hyz.test.action.ACTION_EAT


其中,com.hyz.test是应用的包名,action表示定义的是一个Action动作,而ACTION_EAT,则具体指明了改动做的含义“吃”。

在android的Intent类中,定义了很多标准的动作,比如:Intent.ACTION_VIEW、Intent.ACTION_PIC等。这些标准的动作约定了Android组件间的通信规范,保证了组件系统的可扩展性,使得那些相互独立的组件能够通过这些标准的Action信息彼此沟通。

如果系统预设的这些“标准动作”不能满足应用的要求,则各个应用都可以自行定义扩展。但与这些标准的相比,自定义的Action不常用在跨应用的通信中,而仅应用于应用的内部。

Data项

Data是名词,对应着日常生活中的宾语,代表这上面解析语句的“篮球”。

当发起请求是,调用组件如果有明确的数据对象,通常就会用Data项来 存储表示。

Data数据,可以通过Intent.setData或者Intent.setDataAndType来进行设置,通过Intent.getData函数来读取。

data数据也是用字符串来进行存储的,他的格式符合URI标准。URI具有丰富的表达能力,能够表达存储在任何地方的数据。比如,存放在本地文件系统中的数据可以通过URI来表示:

[code]# 位于本地目录/sdcard/下的sample.data文件
file:///sdcard/sample.data


同样,存放在数据源组件中的数据也可以通过URI来表示:

[code] #数据源组件com.hyz.providers.smaple中id为1的数据:
content://com.hyz.providers.sample/1


甚至,一个存放在web上的数据,同样也可以通过URI来描述:

[code]# 域名flyevnus.net中的sample.data文件 http://flyvenus.net/sample.data


这样,通过URI来描述数据,使得Intent对象不仅能够用来请求本地的组件服务,通过还可以请求Web服务,将本地服务和Web服务有机地结合在一起。

Type项

Data用来特指某一个具体的事物,比如说“我打篮球”,篮球就是具体的事物。

Type用来泛指某一类事物,比如说“我打球”,球是泛指,可以是篮球,可以羽毛球,可以是兵乓球…

在Intent对象中,系统可以通过Intent.setType或Intent.setDataAndType函数设定Type信息,可以调用Intent.getType函数获取该对象的Type信息。Type是MIME格式的字符串数据,可以面熟组件能够处理的请求类型,或者补充说明Data数据的类型。同可以通过通配符 ”*“ 来表示整个类的信息,比如

[code]#用MIME表示图片类型的数据:
image/*


也可以更具体地指明特定子类别:

[code]# 用MIME表示jpg图片类型的数据:
image/jpg


注意:

在Intent对象中,Data项和Type项很多时候是互斥使用的。当调用Intent.setType时,之前设定的Data信息就会被清空;反过来,调用Intent.setData时,Type信息也会被清除。

在一个Intent中,需要用Data来表示数据还是用Type来表示数据类型通常是和Action密切联系的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: