功能:intent主要是用于在activity和service组件间进行数据的传递,起着一个中间桥梁的通信作用
类型主要分为
1、显式intent:来启动指定的组件如从一个activity跳转到另外的activity并传递数据,
1 Intent intent=new Intent(Activitymain.this,Activity01.class); 2 startActivity(intent);
也可以用setClass(Context,Class)来指定目标组件
1 Intent intent=new Intent(); 2 intent.setClass(this,Activity01.class); 3 this.startActivity(intent);
还可以使用Component(ComponentName)来指定目标组件
Component cn=new Component("com.android.myAction"); Intent intent=new Intent(); intent.setComponent(cn); this.startActivity(intent);
2、 隐式intent:没有明确的指出目标组件,需要系统帮助寻找与intent的意图相匹配的组件,如打开某文件时跳出多个程序让你挑选。
intentFilter(意图过滤器):把不需要的intent的过滤掉,找到相同的intent。
方法:通过配置文件进行指定,通过intent-filter标签来完成
<intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/>//启动系统 </intent-filter>
action:代表该intent的所要完成的一个抽象动作,其实就是一个字符。
category:为action增加额外的附加信息。
如下程序研究:
在主程序的代码为:
1 bn.setOnClickListener(new OnClickListener(){ 2 Intent intent=new Intent(); 3 intent.setAction(ActionAttr.DASOU_ACTION); 4 startActivity(intent); 5 });
上述代码中要创建常量
final static String DASOU_ACTION="org.dasou.intent.action.DASOU_ACTION";
上面代码中没有显式启动哪个Activity,则要在需要启动的Activity的配置文件中进行配置
<intent-filter> <action android:name="org.dasou.intent.action.DASOU_ACTION">// <action android:name="dasou"/>//指定activity能响应action属性为dasou的intent <category android:name="android.intent.category.DEFAULT">//指定该action能响应category的属性为指定字符的intent </intent-filter>
data:数据,指的是动作相关的数据的资源标识和数据的MIME类型。
flags:标志,Intent对象有各种标记,很多都是用于指示Android系统如何启动Activity(如,Activity应该属于哪个任务),以及启动后如何处理(如,它是否属于最近的Activity列表)。
下一页:intent调用系统组件