Android基础知识(四):Intent

Intent是Android程序中各组件之间进行交互的一种重要方式,其不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动、启动服务以及发送广播等场景。

Intent大致可以分为两种:显示Intent和隐式Intent。

一、显示Intent

显示Intent是指按名称(完全限定类名)指定要启动的组件

显示Intent的用法如下图所示。该代码使用Intent在MainActivity的基础上启动SecondActivity这个活动,通过startActivity()方法执行这个intent。其中第一个参数Context要求提供一个启动活动的上下文,第二个参数Class则是指定想要启动的目标Activity。

android intent使用 android的intent介绍_Android

二、隐式Intent

隐式Intent:不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理它。

在介绍隐式Intent的使用之前,需要先了解一下AndroidManifest.xml中的一些标签。在前面一篇笔记中介绍过,Android的四大组件的注册声明需要在AndroidManifest.xml中进行(Broadcast Receiver可以动态注册),以Activity的注册为例,如下图所示。

android intent使用 android的intent介绍_Android基础_02


其中intent-filter为Activity的一个过滤列表,一个过滤列表中的action、type、category可以有多个,所有的action、type和category分别构成不同类别,同一类别信息共同约束当前类别的匹配过程。只有一个Intent同时匹配action、type和category这三个类别才算完全匹配

隐式Intent使用方式如下。其中action的字符串只能指定一个,而category可以指定多个,Intent通过action、category进行匹配,找到对应的Activity并启动。

android intent使用 android的intent介绍_android intent使用_03


Intent-filter中的标签在Java代码中有对应的setxx()方法,例如data标签的setData()方法,更多的隐式Intent用法可参看《第一行代码》。

参考资料:《第一行代码 Android 第2版》