Intent:
1.Intent用来启动系统组件(Activity,Service,BroadcastReceiver)
2.Intent的属性
Component属性:接受一个ComponentName对象,创建一个ComponentName对象需要指定包名和类名,构造函数如下:
ComponentName(String pkg, String cls)
ComponentName(Context pkg, String cls)
ComponentName(Context pkg, Class<?> cls)
即需要包名+类名
Action属性:代表该Intent所要完成的一个抽象动作,具体由哪个组件完成是不知道的,取决于组件的<intent-filter/>配置,只要组件的<intent-filter/>包含该动作,组件就有可能被启动(一个Intent最多包含一个Action属性)
Category属性:为Action属性增加额外的信息(一个Intent可以包含多个Category属性)
Data属性:为Action属性提供操作的数据,接受一个Uri对象,分为类型部分和数据部分 tel:12345 一旦同时指定Action、Data属性,则会启动特定应用成语并对指定数据执行相应操作
Type属性:用于指定Data属性所指定的数据的类型或MIME类型(一般在没设置Data属性时使用,有Data属性则可从Data属性获得数据类型)
Extra属性:用于在多个Action间进行数据交换,是一个Bundle对象(Bundle对象是一个Map对象)
Bundle:
Bundle对象是一个Map对象,存储键值对(key-value)
1.传递数据:
Bundle提供了各种putX(String key, X value)和getX(String key) getX(String key, X defaultValue)方法,可以是boolean,int,long,float,double,String与它们对应的数组putXArray(String key, X[] value)和getXArray(String key)
2.传递Serializable类型的对象:
直接Implement Serializable接口,即可实现序列化,较慢,Bundle提供putSerializable(String key, Serializable value)和getSerializable(String key)方法
3.传递Parcelable类型对象:
同样是实现数据的序列化,是android自定义接口,较快,下次详细研究,Bundle提供putParcelable(String key, Parcelable value),putParcelableArray(String key, Parcelable[] value),putParcelableArrayList(String key, ArrayList<? extends Parcelable> value)和getParcelable(String key),getParcelableArray(String key),getParcelableArrayList(String key)方法