iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android中的广播(BroadCast)详细介绍
  • 749
分享到

Android中的广播(BroadCast)详细介绍

Android 2022-06-06 10:06:18 749人浏览 独家记忆
摘要

什么是广播 在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。我们拿广播电台来做个比方。我们平常使用收音机收音是这样的:许许多多不同的广播电台

什么是广播

Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。我们拿广播电台来做个比方。我们平常使用收音机收音是这样的:许许多多不同的广播电台通过特定的频率来发送他们的内容,而我们用户只需要将频率调成和广播电台的一样就可以收听他们的内容了。Android中的广播机制就和这个差不多的道理。

电台发送的内容是语音,而在Android中我们要发送的广播内容是一个Intent。这个Intent中可以携带我们要传送的数据。

电台通过大功率的发射器发送内容,而在Android中则是通过sendBroadcast这个方法来发送(很形象的名字吧)。      

用户通过调整到具体的电台频率接受电台的内容。而在Android中要接受广播中的内容则是通过注册一个BroadCastReceiver来接收的。只有发送广播的action和接收广播的action相同,接受者才能接受这个广播。

广播有什么用

其实,在什么是广播的第一句就已经说明了广播有什么用了。对了,笼统一点讲就是用来传输数据的。具体一点说就是:     1.实现了不同的程序之间的数据传输与共享,因为只要是和发送广播的action相同的接受者都能接受这个广播。典型的应用就是android自带的短信,电话等等广播,只要我们实现了他们的action的广播,那么我们就能接收他们的数据了,以便做出一些处理。比如说拦截系统短信,拦截骚扰电话等等 2.起到了一个通知的作用,比如在service中要通知主程序,更新主程序的UI等。因为service是没有界面的,所以不能直接获得主程序中的控件,这样我们就只能在主程序中实现一个广播接受者专门用来接受service发过来的数据和通知了。

实现广播

现在我们就来实现一个简单的广播程序。Android提供了两种注册广播接受者的形式,分别是在程序中动态注册和在xml中指定。他们之间的区别就是作用的范围不同,程序动态注册的接收者只在程序运行过程中有效,而在xml注册的接收者不管你的程序有没有启动有会起作用。首先介绍在程序中动态注册的方式。

动态注册方式

我们在程序中设置了三个按钮,分别是“注册广播”,“取消注册”和“发送广播”。然后每个按钮设置点击事件来完成广播的演示。

最简单的项目的建立过程和按钮事件的建立我再这里就不罗嗦了,不会的可以下载下面的DEMO源码查看。直接看三个按钮的实现方式。

首先是注册广播的按钮事件代码:

代码如下:
private ReceiveBroadCast receiveBroadCast;  //广播实例
 
public class ReGISteLinster implements OnClickListener
{
        @Override
        public void onClick(View view)
        {
            // 注册广播接收
            receiveBroadCast = new ReceiveBroadCast();
            IntentFilter filter = new IntentFilter();
            filter.addAction(flag);    //只有持有相同的action的接受者才能接收此广播
            registerReceiver(receiveBroadCast, filter);
        }
}
 
public class ReceiveBroadCast extends BroadcastReceiver
{
 
        @Override
        public void onReceive(Context context, Intent intent)
        {
            //得到广播中得到的数据,并显示出来
            String message = intent.getStringExtra("data");
            txtShow.setText(message);
        }
 
}

首先我们实现了一个ReceiveBroadCast 类,它继承了BroadcastReceiver并实现了其中的onReceive方法,这样当这个广播被接收的时候就会执行这个方法。注意我们在注册广播的时候使用了filter.addAction方法添加了一个过滤器。如果没有这一句,就相当于广播电台没有告诉咱们收音机用户接收的频率,就不好收听这个广播了。

再来看看如何取消注册,是的程序不再接收这个类型的广播了。

代码如下:
public class UnregisteLinster implements OnClickListener
{
 
        @Override
        public void onClick(View arg0)
        {
            unregisterReceiver(receiveBroadCast);
        }
}

怎么样?是不是超级简单的啊,就是将我们上面的那个广播类的实例传进去就行了。现在注册,取消注册都好了,就剩下如何发送了。看代码:

代码如下:
public class SendBroadCastListener implements OnClickListener
{
        @Override
        public void onClick(View arg0)
        {
            Intent intent = new Intent();  //Itent就是我们要发送的内容
            intent.putExtra("data", "this is data from broadcast "+Calendar.getInstance().get(Calendar.SECOND)); 
            intent.setAction(flag);   //设置你这个广播的action,只有和这个action一样的接受者才能接受者才能接收广播
            sendBroadcast(intent);   //发送广播
        }
}

每一句都注释了的,就不要我再讲了吧。一看就明白了。现在,运行程序看看效果吧。先注册一下,然后每发送一次广播上面的文字就会变化一次,表明已经接收到了广播了。按取消注册后你可以发现再按发送按钮已经接收不到广播了。

配置文件方式

配置和动态注册的区别在上面已经说了,这种方式适合你的程序需要长期的监测某个广播的情形,比如监测用户的短信。注册方式比较简单,相当于上面的代码只要接收的那部分就行了。不过要注意的是通过配置文件这种方式注册广播需要在单独的一个类中继承BroadReceiver,内部类是没有用的。所以我们新建了一个broadCastReceiveByXml类并继承了BroadReceive。代码如下:
代码如下:
public class broadCastReceiveByXml extends BroadcastReceiver
{
 
    @Override
    public void onReceive(Context arg0, Intent arg1)
    {
        Log.d("qlf", "broadcast receive by xml");    //因为不在主UI下,不好使用控件,所以我们这里打印到LOG里面查看效果
    }
 
}

然后在AndroidManifest中的<activity></activity>节点之后我们添加一下代码:

代码如下:
<receiver android:name="com.qlf.broadCast.broadCastReceiveByXml">
    <intent-filter>
        <action android:name="com.qlf.broadCastFlag">
        </action>
    </intent-filter>
</receiver>

receiver中的android:name就是我们在程序中的那个接收广播的类。下面的intent-filter和我们讲到的功能类似,而这个action就是上面的那个flag啦。现在我们运行程序,发现同样可以实现上面的功能。运行的结果如下:

除了使用我们自己发送广播,android也内置了许多广播。比如我们上面提到的来了消息的时候android会发送一个action名为“android.provider.Telephony.SMS_RECEIVED”的广播,这个时候如果我们想要接受这个广播只要将配置文件中的那个action设置为上面这个字符串就能接收到消息信息了。android包括了许多其他的广播action,有兴趣的同学到网上搜搜就有了。这里就不再举例了。

您可能感兴趣的文章:Android中BroadcastReceiver(异步接收广播Intent)的使用Android提高之BroadcastReceiver实例详解深入Android中BroadcastReceiver的两种注册方式(静态和动态)详解Android编程四大组件之BroadcastReceiver(广播接收者)用法实例Android查看电池电量的方法(基于BroadcastReceiver)Android使用广播(BroadCast)实现强制下线的方法Android实现Activity、Service与Broadcaster三大组件之间互相调用的方法详解Android开发之BroadcastReceiver用法实例分析Android基础知识之broadcast广播详解Android学习之Broadcast的简单使用


--结束END--

本文标题: Android中的广播(BroadCast)详细介绍

本文链接: https://www.lsjlt.com/news/26868.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解Android广播Broadcast的启动流程
    Android中的广播是一种用于应用程序之间通信的机制。它允许应用程序发送和接收系统级或应用程序级的广播消息。当一个广播被发送时,系...
    99+
    2023-08-11
    Android
  • Android四大组件之broadcast广播详解
    目录基础广播两大类广播广播的动态和静态注册监听时间变化监听系统启动案例创建 receiver设置权限发送自定义广播如何发送与接收有序广播基础广播 两大类广播 标准广播:异步执行,广播...
    99+
    2024-04-02
  • Pytorch中的广播机制详解(Broadcast)
    目录1. Pytorch中的广播机制2. 广播机制的理解3. 两个张量进行广播机制的条件4. 当两个张量满足可广播条件后5. 从空间上理解广播机制总结1. Pytorch中的广播机制...
    99+
    2023-01-03
    Pytorch广播机制 Pytorch Broadcast 广播机制
  • Android广播Broadcast的启动流程是什么
    这篇“Android广播Broadcast的启动流程是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android广播B...
    99+
    2023-07-05
  • Kotlin四大组件中的broadcast广播
    目录创建Fragmen 碎片主界面中添加ViewPager创建广播小结在上一章中,有个问题可能大家都没有注意,Acitivity 在使用startActivityForResult后...
    99+
    2022-12-08
    Kotlin broadcast Kotlin broadcast广播 Kotlin 广播
  • Broadcast广播机制在PytorchTensorNumpy中的使用详解
    目录1.什么是广播机制2.广播机制的规则3.代码举例4.原地操作1.什么是广播机制 根据线性代数的运算规则我们知道,矩阵运算往往都是在两个矩阵维度相同或者相匹配时才能运算。比如加减法...
    99+
    2024-04-02
  • Android内置SQLite的使用详细介绍
    目录一、创建数据库  1、新建数据库帮助类2、在数据库帮助类中输入代码3、代码讲解  二、添加数据1、界面效果2、准备工作3、布局界面 activity_main...
    99+
    2024-04-02
  • Android中卡顿优化布局详细介绍
    目录背景实践过程如何渲染界面什么是过度绘制如何查看绘制维度界面优化硬件加速原理总结背景 在当下移动互联网后半场,手机已经是人手必备的设备。App是离用户最近的应用,界面又是最直观影响...
    99+
    2024-04-02
  • Android Jetpack组件中LifeCycle作用详细介绍
    目录Jetpack1、那么Jetpack是什么呢2、为何使用Jetpack3、Jetpack与AndroidXLifeCycle1、LifeCycle的作用2、LifeCycle应用...
    99+
    2024-04-02
  • Java中CompletableFuture 的详细介绍
    目录1.概述1.0 创建 CompletableFuture 的对象的工厂方法1.1 non-async 和 async 区别1.1.1 non-async 示例:注册 action...
    99+
    2024-04-02
  • jQuery中Ajax的详细介绍
    这篇文章主要介绍“jQuery中Ajax的详细介绍”,在日常操作中,相信很多人在jQuery中Ajax的详细介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”jQuery中A...
    99+
    2024-04-02
  • Python中栈的详细介绍
    目录1、问题描述2、解决方案3、结语本文转自公众号:"算法与编程之美" 1、问题描述 Python中数据类型有列表,元组,字典,队列,栈,树等等。像列表,元组这样的都是python内...
    99+
    2024-04-02
  • Android组件化原理详细介绍
    目录什么是组件化?为什么使用组件化?一步步搭建组件化1.新建模块2.统一Gradle版本号3.创建基础库4.组件模式和集成模式转换5.AndroidManifest的切换6.*业务A...
    99+
    2024-04-02
  • Flink的详细介绍
    这篇文章主要介绍“Flink的详细介绍”,在日常操作中,相信很多人在Flink的详细介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Flink的详细介绍”的疑惑有所帮助!接...
    99+
    2024-04-02
  • rabbitMQ的详细介绍
    1.概述 RabbitMQ是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑RabbitMQ是一个快递站,一个快递员帮你传递快件。...
    99+
    2023-09-05
    rabbitmq npm linux java 分布式
  • Linux中的LVM的详细介绍
    这篇文章主要介绍“Linux中的LVM的详细介绍”,在日常操作中,相信很多人在Linux中的LVM的详细介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux中的LVM的详细介绍”的疑惑有所帮助!接下来...
    99+
    2023-06-13
  • Android四大组件之Activity详细介绍
    目录理论概述Activity的理解Activity的定义Activity的作用类比Activity与ServletIntent的理解Intent的分类Intent的使用IntentF...
    99+
    2024-04-02
  • php中链表的详细介绍
    这篇文章主要介绍“php中链表的详细介绍”,在日常操作中,相信很多人在php中链表的详细介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php中链表的详细介绍”的疑惑有所帮...
    99+
    2024-04-02
  • node中Stream流的详细介绍
    目录一、是什么二、种类双工流双工流三、应用场景get请求返回文件给客户端文件操作一些打包工具的底层操作一、是什么 流(Stream),是一个数据传输手段,是端到端信息交换的一种方式,...
    99+
    2024-04-02
  • Python中的列表详细介绍
    本篇内容主要讲解“Python中的列表详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中的列表详细介绍”吧!Python中的for循环Python中的for循环语句按顺序遍历任...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作