我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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的简单使用


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

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

下载Word文档

猜你喜欢

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

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

Android入门:广播发送者与广播接收者详细介绍

一、广播发送者&广播接收者介绍 1.广播接收者 广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写:public void onReceive(Context context,Inte
2022-06-06

详解Android广播Broadcast的启动流程

Android中的广播是一种用于应用程序之间通信的机制。它允许应用程序发送和接收系统级或应用程序级的广播消息。当一个广播被发送时,系统会自动启动广播接收器来处理该广播。下面是Android广播的启动流程:1. 广播发送:应用程序发送一个广播
2023-08-11

Pytorch中的广播机制详解(Broadcast)

这篇文章主要介绍了Pytorch中的广播机制详解(Broadcast),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-01-03

Android中的WebView详细介绍

Android中WebView的详细解释: 1. 概念: WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页。 2. 使用方法: (1).实例化WebView组件: A.在Act
2022-06-06

Android广播接收机制详细介绍(附短信接收实现)

Android中广播(BroadcastReceiver)的详细讲解. 1. BroadcastReceiver的注册过程: (1).广播消息发出来后,只有订阅了该广播的对象才会接收发出来的广播消息并做出相应处理。 **(2).**An
2022-06-06

Android 中的注解详细介绍

注解是我们经常接触的技术,Java有注解,Android也有注解,本文将试图介绍Android中的注解,以及ButterKnife和Otto这些基于注解的库的一些工作原理. 归纳而言,Android中的注解大概有以下好处提高我们的开发效率更
2022-06-06

Android Handler的详细介绍

Handler的定义  主要接受子线程发送的数据, 并用此数据配合主线程更新UI.  解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发。比如说, 你要是点击一个
2022-06-06

Android中的Looper对象详细介绍

Java 官网对Looper对象的说明: public class Looperextends ObjectClass used to run a message loop for a thread. Threads by default
2022-06-06

Android Application类的详细介绍

Android Application类详解: Android中Application类的详细解释: 我们在平时的开发中,有时候可能会需要一些全局数据,来让应用中的所有Activity和View都能访问到,大家在遇到这种情况时,可能首先会想
2022-06-06

Android Service中方法使用详细介绍

service作为四大组件值得我们的更多的关注 在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务。例如,一个从service播放音乐的音乐播放器,应被设置为前台运行,因为用户会明确地注意
2022-06-06

详细介绍Android中回调函数机制

提示:在阅读本文章之前,请确保您对Touch事件的分发机制有一定的了解 在Android的学习过程中经常会听到或者见到“回调”这个词,那么什么是回调呢?所谓的回调函数就是:在A类中定义了一个方法,这个方法中用到了一个接口和该接口中的抽象方法
2022-06-06

android TextView属性的详细介绍 分享

android:autoLink设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web /email/phone/map/all)android:autoText如果设置,将自动执行输入
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录