其实例如启动Activity等这些功能,在Acitivity有类似 “startActivity(Class activityClass)”的功能接口,之所不使用就是因为我们在文章开头解释的原因。
在Intent中包含了”Component” “Action” “Category” “Data” “Extra” “Type”属性。
其中Extra经常被用来“携带”数据,是我们常常用到。
Component 其实是指被Intent启动的组件的如 “Activity” “Service”等。例如启动一个Activity可以使用下面的方式:
也可以使用如下方式:
当程序通过Intent 的component属性确定了启动哪个组件之后,被启动的组件就不需要向应用的主Activity那样呗指定来配置。
“Action” “Category”其实也是用来控制Intent启动组件的一种形式,我们还记得在AndroidManifest 中的主Activity的配置吗?
是的,Action和Category都是字符串属性,用来找出Intent中启动的Actvity到底是哪个。我们来看使用 “Action” “Category” 来启动Actvity的例子:
上面的code没有指定出具体哪一个Activity被启动,但是哪一个Activity被启动呢?答案就是这一行代码:
这行代码指定了在AndroidManifest中配置的Activity,这个Activity必须配置了intent-filter,同时其中配置了action属性,这个action的属性值为”CRAZYIT_ACTION”常量所表达的值。如下:
Category的使用也是类似的,大家多多思考一下。