Android应用开发:Intent机制

前言

 

  安卓 Intent 是一种在 Android 应用程序之间传递信息的机制。它可以用于启动活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver),以及传递数据和操作等。

一、Intent介绍

        在 Android 开发中,Intent 是一种非常重要的机制,它能够在应用程序之间传递数据并启动不同的组件。本篇文章将介绍如何使用 Intent 来实现不同组件之间的通信。

1、创建Intent:

 Android 中,我们可以使用 Intent 类来创建一个新的 Intent。其构造方法包含两个参数:Context 参数和目标组件的 Class 对象。 Context 参数通常指当前的 Activity 或 Application 对象,而目标组件则是要启动的 Activity、Service 或 BroadcastReceiver 等组件的类名。例如:

Intent intent = new Intent(this, xxxActivity.class);

这里使用 Intent 类创建了一个 intent,它的第一个参数(Context)为 "this" 是指当前的 activity(MainActivity),第二个参数则代表了目标 activity,这个intent将可以用于启动或传输数据到这个xxxActivity。

2、给 Intent 添加数据:

当我们创建了一个 Intent 后,接下来就可以使用 putExtra() 方法向它添加数据了(当然你也可以不添加数据,单纯用来启动组件)。数据可以是任意类型的对象,包括基本数据类型、字符串、数组等。我们举例来让刚才创建的 intent 携带一个字符串数据:

intent.putExtra("username", "ikun");

putExtra() 方法可以将键值对添加到 Intent 中。在这个例子中,键是"username",值是 "ikun"。通过这种方式 Intent 将一对一对的数据携带到其他的组件中去。

3、启动组件:

我们刚才创建的 intent 目标是另一个 activity ,我们可以用 startActivity() 方法启动它:

startActivity(intent);

这样我们就可以跳转到新的 activity 或者在 activity 之间传输数据了。当然你可以用同样的方法去启动 Service ,如果你创建的 Intent 目标参数是形如 "xxxService.class"。启动方法如下:

startService(intent);

这样这个 Service 就被启动了,和往常一样它会保持运行。

4、接收 Intent 中的数据:

在目标组件中,我们可以通过 Intent 对象来获取传入的数据。首先我们得获取这个传过来的 Intent,然后再获取其中的键值对:

Intent intent = getIntent();  //获取当前接收到的 Intent 对象
String name = intent.getStringExtra("username");

注意到这里的参数就是刚才传数据的键了,这个获取数据的方法要根据数据类型变化,比如 getIntExtra() 等等。这类方法还可以设置第二个参数 "defaultValue",也就是默认值,如果前边的键没 get 到有效值那就用后边这个默认值。

Intent 与广播:

除了启动组件之外,我们还可以使用 Intent 发送广播。广播接收器可以监听特定的广播,并执行相应的操作。例如:

Intent intent = new Intent();
intent.setAction("com.example.MY_ACTION");
sendBroadcast(intent);

在上述代码中,我们创建了一个用于发送 MY_ACTION 广播的 Intent,然后使用 sendBroadcast() 方法将它发出去。当 MY_ACTION 广播被接收时,与其关联的 BroadcastReceiver 将会执行相关的操作。接下来我们需要在 BroadcastReceiver 中注册相应的 IntentFilter 以接收指定的广播。例如:

public class MyReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if ("com.example.MY_ACTION".equals(intent.getAction())) {
            // 执行相关的操作...
        }
    }
}

在上述代码中,我们创建了一个 MyReceiver 的 BroadcastReceiver,并在其中重写了onReceive() 方法。通过使用 intent.getAction() 方法来检查接收到的广播是否为 MY_ACTION,如果是,则执行相应的逻辑。

二、使用示例

这里简单写一个用 Intent 实现 activity 之间通信的例子:

首先是再建一个 Activity 和对应的 xml 文件,第一个页面对应MainActivity,就一个按钮,按一下我们跳转并且传数据到第二个页面,第二个页面有一个图和文本框。

                                                      创建Activity

                          页面1                                                           页面2

按钮绑定下面的方法:

 在第二个 Activity 的 onCreate() 函数里这样写:

跑一下试试,点击按钮:

可以看到启动了另一个 activity 并传输了数据。


总结

以上就是使用 Intent 实现 Android 组件之间通信的基本方法和步骤。无论使用何种方式实现组件间通信,都需要理解并掌握 Intent。

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值