Intent 在安卓中是一个非常重要的对象,在平时开发中用的很多。它是一个消息传递对象,我们可以使用它从其他应用组件请求操作。但是Intent的类型让很多开发者困惑,我在查阅了官方文档之后,对这两种类型有更详细的认知。
Intent分为两种类型:
- 显式Intent:按名称(完全限定类名)指定要启动的组件。通常,我们会在自己的应用中使用显式 Intent 来启动组件,这是因为我们知道要启动的 Activity 或服务的类名。例如,启动新 Activity 以响应用户操作,或者启动服务以在后台下载文件。
- 隐式Intent:不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理它。例如,如需在地图上向用户显示位置,则可以使用隐式 Intent,请求另一具有此功能的应用在地图上显示指定的位置。
说了这些概念可能还不是很好理解,接下来就通过一个图来说明:
隐式 Intent 如何通过系统传递以启动其他 Activity 的图解:[1] Activity A 创建包含操作描述的 Intent,并将其传递给 startActivity()。[2] Android 系统搜索所有应用中与 Intent 匹配的 Intent 过滤器。找到匹配项之后,[3] 该系统通过调用匹配 Activity(Activity B)的 onCreate() 方法并将其传递给 Intent,以此启动匹配 Activity。