让你的App组件默契配合,像超级英雄团队一样战斗!
前言:什么是Intent,为什么它如此重要?
在Android世界中,人不会漫无目的地瞎逛,他们所做的大部分事情——比如看电视、购物、编写下一个杀手级App——都带有特定的目的或者意图。
Android也是同样的,而实现这种"目的"或"意图"的机制,就叫做Intent。
简单来说,Intent是Android应用中连接三个核心组件——Activity、Service和BroadcastReceiver的桥梁。
它负责对应用中操作的动作、动作涉及数据及附加数据进行描述。想象一下,如果没有Intent,你的App就像一支没有指挥的交响乐团——每个乐手(组件)都很优秀,但无法协同演奏出美妙的音乐。
一、Intent对象:一个小小的信息桶
1.1 Intent的本质
Intent对象本质上是一个信息桶(a passive data structure)。它包含了接收它的组件感兴趣的信息(如携带的动作和数据),以及Android系统感兴趣的信息(如处理Intent和启动目标Activity指令的组件的类别)。
程序的三个核心组件——Activity、Services、Broadcast Receiver——是通过Intent传递消息的。Intent消息对于运行时绑定不同的组件是很方便的,这些组件可以是同一个程序也可以是不同的。
1.2 Intent的构造函数
在实际编码中,我们通常使用以下几种方式创建Intent对象:
// 显式Intent:明确指定要启动的组件类
Intent explicitIntent = new Intent(this, TargetActivity.class);
// 隐式Intent:指定动作和数据,由系统决定哪个组件来处理
Intent implicitIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.example.com"));
二、Intent的六大属性:深入了解Intent的构成
Intent类定义在android.content.Intent包中,Intent对象包含Component、Action、Data、Category、Extra及Flag等6种属性。
2.1 Component(组件)属性
Component属性用于指定Intent的目标组件,一般由相应组件的包名与类名组合而成。
指定了Component属性值之后,Intent的其他属性值都是可选的,此时该Intent就是一个显式Intent。如果不指定Component属性值,则该Intent就是个隐式Intent。
// 设置Component属性的方法
intent.setComponent(componentName);
intent.setClass(context, TargetActivity.class);
intent.setClassName(packageName, className);
2.2 Action(行动)属性
Action属性用来指明要实施的动作是什么,其属性值是Intent即将触发动作名称的字符串。
Intent定义了用大写字母和下画线组成的动作常量,例如:
-
<

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



