基于显式intent的通信

本文介绍了在Android中如何使用显式Intent来启动Activity。通过Intent作为组件间通信的媒介,ActivityManager根据Intent创建并启动目标Activity。显式Intent需要明确指定Context和Class,通常用于同一应用内的Activity启动。Intent还可以携带extra数据,通过键值对的形式传递,接收方通过键来获取数据,避免命名冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个activity启动另一个activity最简单的方法就是使用startActivity(Intent)方法,activity调用这个方法时,嗲用请求实际发送给了操作系统的ActivityManager。ActivityManager负责创建Activity实例并调用其onCreate(Bundle)方法。


ActivityManager该启动哪个activity就在于传入startActivity(Intent)方法的Intent参数。

intent对象是component用来与操作系统通信的一种媒介工具,activity就是一种component。intent可以使用一下构造方法来告诉ActivityManager该启动哪个activity:

public Intent(Context packageContext,Class<?> cls)

传入该方法的Class类型参数告诉ActivityManager应该启动哪个activity;Context参数告诉ActivityManager在哪里可以找到它。在启动activity之前,ActivityManager会确认指定的Class是否在manifest配置文件中声明。

intent分为显示intent和隐式intent。如果通过指定Context对象与Class对象,然后调用intent的构造方法来创建Intent,则创建的是显示intent。在同一应用中,我们使用显示intent来启动activity。一个应用的activity如需启动另一个应用的activity,可通过创建隐式intent来处理。

使用intent extra

extra信息附加在传入stratActivity(Intent)方法的Intent上发送出去,可以是任意数据,接收方activity接收到操作系统转发的intent后,访问并获取其中的extra信息。要将extra数据信息添加个intent,需要调用如下方法:

public Intent putExtra(String name,boolean value)

该方法形式多变,但它总有两个参数,一个参数是固定为String类型的键,另一个参数是键值,可以是多种数据类型。该方法返回intent自身,因此,需要时可进行链式调用。activity可能启动自不同的地方,所以,应该在获取和使用extra信息的activity那里,为它定义键,用包名修饰extra数据信息,这样,可以避免来自不同应用的extra间发生命名冲突。

要从extra获取数据,会用到如下方法:

public boolean getBooleanExtra(String name,boolean defaultValue) 
第一个参数是extra的名字,第二个参数是指定默认值,它在无法获得有效键值时使用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值