Android开发-Intent(意图)

往期回顾:

Android布局和控件

Activity(活动)的生命周期

安卓逆向交流学习:342647370

vx:yijin1108an

1.1 Intent的介绍

1.Intent是什么?

Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的activity, service和broadcast receiver之间的交互。

Intent是一种运行时绑定(runtime binding)机制,它能在程序运行的过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来响应。

2.Intent种类

1)显式Intent,即直接指定需要打开的activity对应的类。

显式Intent通过Component可以直接设置需要调用的Activity类,可以唯一确定一个Activity,意图特别明确,所以是显式的。设置这个类的方式可以是Class对象,也可以是包名加类名的字符串。

2)隐式Intent,不明确指定启动哪个Activity,而是设置Action、Data、Category,让系统来筛选出合适的Activity。筛选是根据所有的来筛选。

3. Intent属性
(1)Intent对象大致包括7大属性:Action(动作)、Data(数据)、Category(类别)、Type(数据类型)、Component(组件)、Extra(扩展信息)、Flag(标志位)。其中最常用的是Action属性和Data属性。 Action:用来表现意图的行动。常见的action,如下表所示:

Android开发-Intent(意图)

Data:表示与动作要操纵的数据
Category:用来表现动作的类别

(2)下面列举一些常用的category:

Android开发-Intent(意图)

Type:指定数据类型
Component:目的组件,指定Intent的目标组件名称
Extra:扩展信息

Android开发-Intent(意图)

Flag:期望这个意图的运行模式,用来指示系统如何启动一个Activity。

1.2 Intent的作用

Activity、Service和Broadcast Receiver之间是通过Intent进行通信,如下图所示。

Android开发-Intent(意图)

如果Activity1需要和Activity2进行联系,二者不需要直接联系,而是通过Intent作为桥梁。

Intent实现页面之间跳转存在两个不同的方法,如下图所示。
1.跳转不返回数据
2.跳转返回数据
1>startActivity(intent)
2>startActivityForResult(intent, requestCode);
onActivityResult(int requestCode, int resultCode, Intent data)
setResult(resultCode, data);

Android开发-Intent(意图)

1.3 实例

1.第一种启动方式(跳转不返回数据)
2.第二种启动方式(跳转返回数据)
(1)先看第一种,如下图所示。

Android开发-Intent(意图)
Android开发-Intent(意图)

点击第一种启动方式按钮会出现右边的图,然后再点击Button按钮返回左边的界面,TextView中的内容没变。

(2)再看第二种启动方式,如下图所示:
与上述不同的是,点击Button按钮返回左边的界面,TextView中的内容变成“你好”了。

Android开发-Intent(意图)
Android开发-Intent(意图)
Android开发-Intent(意图)

小结:

本次主要分享了Intent(意图):
1.Activity、Service和Broadcast Receiver之间是通过Intent进行通信。
2.Activity(活动)的两种启动方式:startActivity:跳转不返回数据。startActivityForResult:跳转返回数据。

如果你也对安卓逆向感兴趣。欢迎扫码关注,关注回复 “安卓逆向” 获取免费教程。

Android开发-Intent(意图)