隐式intent
Intent 分为两种类型:
- 显式 Intent:通过提供目标应用的软件包名称或完全限定的组件类名来指定可处理 Intent 的应用。通常,您会在自己的应用中使用显式 Intent 来启动组件,这是因为您知道要启动的 Activity 或服务的类名。例如,您可能会启动您应用内的新 Activity 以响应用户操作,或者启动服务以在后台下载文件。
- 隐式 Intent :不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理。例如,如需在地图上向用户显示位置,则可以使用隐式 Intent,请求另一具有此功能的应用在地图上显示指定的位置。
启动Activity
时使用Intent
,当使用显示Intent
时,Intent
对象是显式命名的某个具体的Activity
组件时,系统立即启动该组件。
当使用隐式Intent
时,Android 系统通过将 Intent 的内容与在设备上其他应用AndroidManifest
中申明的Intent filter
进行比较,从而找到要启动的相应组件。如果 Intent 与 Intent 过滤器匹配,则系统将启动该组件,并向其传递Intent
对象。如果多个 Intent 过滤器兼容,则系统会显示一个对话框,支持用户选取要使用的应用。
具体过程如图所示:

- Activity A 创建包含操作描述的
Intent
,并将其传递给 startActivity()
- Android 系统搜索所有应用中与 Intent 匹配的 Intent 过滤器。寻找到匹配项
- 该系统通过调用匹配 Activity (Activity B) 的
onCreate()
方法并将其传递给 Intent
,以此启动匹配 Activity。
简单理解显示和隐式的区别就类似于租房子,显示Intent
就是自己知道自己需要什么样的房子,并且已经确认自己想租的房子在那个小区那个单元那个房间(具体类名),而隐式Intent
是只知道自己想租房,然后条件是什么,比如:房间大小、是否是独卫、是否能养宠物,然后把这些条件交给中介(Android系统),最终由中介挑选出一些合适的房间,由自己挑选是否租房。