Intent

2025-07-01

Intent的组成与作用

flowchart LR
send[发送intent]-->component{是否指定组件名}
component-- 是 --> explicit[显式intent]
component-- 否 --> implicit[隐式intent]
explicit --> 启动目标组件
implicit --> search[通过intent filter寻找合适的组件]
search-->multi[返回多个组件]
multi -- 是 --> choose[用户选择组件打开] --> 启动目标组件
multi-- 否 --> 启动目标组件

Intent是组件之间传输消息的信息对象,其组成部分主要如下:

组成部分 作用
ComponentName 在显式Intent中指定,表示目标组件
Action 表示想要完成的一个动作
Category Intent的类别,可以有多个
Data, Type 指向数据的URI以及数据的MIME类型
Extras Bundle类型的对象,用于数据的交换
Flags 通常用于启动Activity时指定一些启动的标志

Intent中的Action

Action 对应的动作
ACTION_MAIN 应用程序入口
ACTION_VIEW 显示数据
ACTION_EDIT 显示可以编辑的数据
ACTION_PICK 选择数据
ACTION_DAIL 显示号码到Dailer
ACTION_CALL 拨打号码
ACTION_SERACH 执行搜索
ACTION_SYNC 同步一个Data

Intent中的Category

Category 对应的类别
CATEGORY_DEFAULT 最常见的隐式intent带的Category,是隐式 Intent 的默认 Category,并且通常用于匹配隐式 Intent 的目标 Activity
CATEGORY_LAUNCHER 对应的Activity为应用的启动入口
CATEGORY_BROWABLE Intent与网络相关,通过浏览器或其他外部应用打开一个Activity
CATEGORY_HOME 指向Home界面
CATEGORY_PREFERENCE 相应的Activity是一个偏好面板

Intent中的Flags

Flag 标志含义
FLAG_ACTIVITY_CLEAR_TOP 每次复用时删除其上方的所有Activity,作为根Actiivty运行
FLAG_ACTVITY_SINGLE_TOP 复用根Actiivty
FLAG_ACTIVITY_NEW_TASK 找到一个task或开启一个task供Activity使用
FLAG_ACTIVITY_NO_HISTORY 离开Activity后,从任务栈中移除