- Intent可以启动Activity,Service,Broadcast,Intent有以下几部分组成:动作,数据,分类,类型,组件,扩展信息,Intent在寻找目标组件时有两种方法:第一通过组件名称直接决定,第二通过Intent Filter过滤指定.
- Intent提供了多个重载的方法来携带额外的数据,最终数据都是放在Bundle中:
- putExtras(Bundle data):向Intent中放入所需要携带的数据包
- Bundle getExtras():获取Intent所携带的数据包
- putExtras(String name, XXX value):向Intent中按key-value对的形式存入数据
- getXxxExtra(String name):从Intent中按key取出指定类型的数据,Xxx:是不同的数据类型,如char,int等
- Bundle是一个简单的数据携带包,该对象中包含了多个方法来存入数据
- putXxx(String key,Xxx data):向Bundle中放入Int,Long等各种类型的数据
- putSerizlizable(String key,Serializable data):向Bundle中放入一个可序列化的对象
- getXxx(String key):从Bundle中取出Int,Long等各种类型的数据
- getSerializable(String key,Serializable data):从Bundle中取出一个可序列化的对象
- Action:是Intent要完成的动作,是个字符串常量,可以自定义,Intent.SetAction设置Action,系统有很多自定义Action,一个Intent只能包含一个Action
- Data:是执行动作的URI和MIME类型,不同的Action有不同的Data数据指定,如在一个Intent中设置Action_View,Data设为www.baidu.com,StartActivity(intent)时就会打开baidu网站.MIME的格式为abc/xyz: 其中abc为数据的大类型,xyz为数据的具体类型
- Category:一个执行Action的附加信息
- Extras:添加一些组件的附加信息
- Type:指定该Data所指定Uri对应的MIME类型,与Data可能会相互覆盖,除非调用Intent的setDataAndType方法
- Flag: 通常用Activity.launchMode属性替代Flag的作用
- 当系统通过Intent启动指定的Activity时,如果系统没有找到合适的Activity,会导致程序异常,但通过Intent激发BroadcastReceiver时,如果找不到合适的BroadcastReceiver组件,应用不会有任何问题
- PendingIntent类是一种特殊的Intent,主要区别是Intent是立即执行,而PendingIntent不是立刻执行,pendingintent 执行的操作实际是参数传来的Intent操作,使用pendingintent的目的在于它所包含的Intent的操作的执行时需要满足某些条件的,主要使用的地方有:通知Notification的发送,短信SmsManager的发送和警报器AlarmManager的执行等,Intent与PendingIntent的区别如下:
- Intent是立即使用的,PendingIntent可以等到事件发生后出发,比如当用户点击了通知栏的nocation的时候才会跳转到 应用的某一个activity,PendingIntent可以cancel
- Intent在程序结束后终止,pendingIntent在程序结束后依然有效
- Pending自带Context,而Intent需要再某个Context中运行
- Intent在原Task中运行,PendingIntent在新的Task中运行
Android Intent
原文:http://www.cnblogs.com/phenixyu/p/3969132.html