Intent简介

 

1.Intent类简介

所谓Intent,就是一种运行时的绑定机制在应用程序运行时连接两个不同的组件。一般的应用是通过Intent向Android系统发出某种请求,然后Android系统会根据请求查询各个组件声明的IntentFilter,找到需要的组件并运行它。

前面介绍的Activity、Service及BroadcastReceiver组件之间的通信全部使用的是Intent,但是各个组件使用的Intent机制不同。

(1)Activity组件

当需要激活一个Activity组件时,需要调用Context.startActivity或Context.startAcivityForResult方法来传递Intent,此时的Intent参数称作Activity Action Intent

(2)Service组件

当需要启动一个Service组件时,会通过Context.startService和Context.bindService方法实现Intent的传递。

(3)BroadcastReceiver组件

BroadcastReceiver一般是通过Context.sendBroadcast()、sendOrderedBroadcast()或sendStickyBroadcast()方法来传递的,当BroadcastIntent被广播后,所有IntentFilter过滤条件满足的组件都将被激活。

Intent是由组件名称、Action、Data、Category、Extra及Flag六部分组成的,接下来将分别对其进行详细介绍。

(1)组件名称

组件名称实际上就是一个ComponentName对象,用于标识唯一的应用程序组件,即指明了期望的Intent组件,这种对象的名称是由目标组件的类名与目标组件的包名组合而成的。在Intent传递过程中,组件名称是一个可选项,当指定它时,便是显式的Intent消息,当不指定它时,Android系统则会根据其他信息及IntentFilter的过滤条件选择相应的组件。

(2)Action

Action实际上就是一个描述了Intent所触发动作名称的字符串,在Intent类中,已经定义好很多字符串常量来表示不同的Action,当然,开发人员也可以自定义Action,其定义规则同样非常简单。

系统定义的Action常量有很多,下面只列出其中一些较为常见的。

》ACTION_CALL,拨出Data里封装的电话号码

》ACTION_EDIT,打开Data里指定数据所对应的编辑程序。

》ACTION_VIEW,打开能够显示Data中封装的数据的应用程序

》ACTION_MAIN,声明程序的入口,该Action并不会接收任何数据,同时结束后也不会返回任何数据。

》ACTION_BOOT_COMPLETED,BroadcastReceiver Action的常量,声明系统启动完毕。

》ACTiON_TIME_CHANGED,BroadcastReceiver Action常量,表示系统时间通过设置而改变。

(3)Data

Data主要是对Intent消息中数据的封装,主要描述Intent的动作所操作到的数据的URI及类型。不同类型的Action会有不同的Data封装,例如打电话的Intent会封装tel://格式的电话URI,而ACTION_VIEW的Intent中的Data则会封装http:格式的URI。正确的Data封装对Intent匹配请求同样非常重要。

(4)Category

Category是对目标组件类型信息的描述。同样作为一个字符串对象,一个Intent中可以包含多个Category。与Category相关的方法有三个,addCategory添加一个Category,removeCategory删除一个Category,而getCategory得到一个Category。Android系统同样定义了一组静态字符串常量来表示Intent的不同类别

(5)Extra

Extra中封装了一些额外的附加信息,这些信息是以键值对想形式存在的。Intent可以通过putExtras()与getExtras方法来存储或获取Extra。在Android系统的Intent类中,同样对一些常用的Extra键值进行了定义,如下所示。

(6)Flag

2.IntentFilter简介

IntentFilter实际上相当于Intent的过滤器,一个应用程序开发完成后,需要告诉Android系统自己能够处理哪些隐性的Intent请求,这就需要声明IntentFilter。

IntentFilter过滤Intent时,一般是通过Action、Data、及Category三方面进行监测的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值