Intent的用途与组成
Intent用于处理Android各组件之间的通讯。Intent完成的工作主要有三部分:1、Intent需标明本次通讯请求是从哪里来,到哪里去,要怎么走;
2、发起方携带上本次通讯需要的数据内容,接收方则对收到的Intent数据进行解包;
3、如发起方要求判断接收方的处理结果,Intent还需负责传回应答的数据内容;
Intent由以下部分组成:
Component : 组件,用于指定Intent的来源与目的
Action : 用于指定Intent的动作
Data(即Uri) : 用于指定动作要操纵的数据路径
Category : 用于指定动作的类别
Type : 数据类型,用于指定Data类型的定义
Extras : 扩展信息,用于指定装载的参数信息
Flags : 标志位,用于指定Intent的运行模式(也叫启动标志)。详细说明见上一节的《 Android开发笔记(三十九)Activity的生命周期》。
Intent的来源与目标
显式Intent
显式Intent便是直接指定来源类与目标的类名,属于精确匹配。下面在声明一个Intent对象时,第一个参数就指定了当前来源是MainActivity,第二个参数指定接下来要跳转到FirstActivity。 Intent intent = new Intent(MainActivity.this, FirstActivity.class);
startActivity(intent);
查看Intent的源码,看到这个显式的构造函数其实就是指定了一个Component。
public Intent(Context packageContext, Class<?> cls) {
mComponent = new ComponentName(packageContext, cls);
}
所以上面的Intent跳转也可以写成下面直接设置ComponentName的一种形式:
Intent intent = new Intent();
ComponentName component = new ComponentName(MainActivity.this, FirstActivity.class);
intent.setComponent(component);
startActivity(intent);