Intent
Intent 是一个消息传递对象,一般作为参数使用(startActivity() startService()
),使用它可以向其他Android组件请求操作。Intent的基本用途主要包括:启动 Activity、启动服务、传递广播。Intent可以分为显式Intent(指定特定组件)和隐式Intent(不指定特定组件)。
Intent对象可以封装六种信息(基本属性):
- 组件名称(ComponentName)
- 动作(Action)
- 种类(Category)
- 数据(Data)
- 附件信息(Extra)
- 标志(Flag)
Intent种类
- 显式Intent
直接传入Component,打开对应组件。
- 构造方法传入
- setComponent方法
- setClass / setClassName方法
Intent setClass (Context packageContext, Class<?> cls);
Intent setClassName (Context packageContext, String className);
Intent setClassName (String packageName, String className);
Intent setComponent (ComponentName component)
-
隐式Intent
不明确指定启动哪个组件,而是设置Action、Data、Category属性让系统来筛选出合适的组件。筛选是根据在
AndroidManifest.xml
中声明的<intent-filter>
来筛选。
Intent属性
-
动作(Action) 也叫操作(官方文档)
自定义动作:一个字符串变量,用来指定Intent要执行的动作类别。在
AndroidManifest.xml
中声明组件时加入动作参数。然后使用setAction()
或Intent构造函数为Intent指定Action。通用动作:Intent类中定义的操作常量。
-
数据(Data)
表示Action对应要操作的数据,一般以URI对象的形式表现。也可利用其进行筛选。
-
种类(Category)
用来表现动作的类别,与动作的关系可以类比文件夹和文件。
-
附件信息(Extra)
Intent携带的额外的键值对形式数据,通过调用
putExtra()
进行数据设置,传入的是Bundle。被调用的组件可以通过调用getXXXExtra()
获取数据 -
标志(Flag)
指示系统如何启动一个Activity