定义
BroadcastReceiver,“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播。在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能;当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作;当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量低时告知用户及时保存进度等等。Android中的广播机制设计的非常出色,很多事情原本需要开发者亲自操作的,现在只需等待广播告知自己就可以了,大大减少了开发的工作量和开发周期。而作为应用开发者,就需要数练掌握Android系统提供的一个开发利器,那就是BroadcastReceiver。
在我们详细分析创建BroadcastReceiver的两种注册方式前,我们先罗列本次分析的大纲:
(1)对静态和动态两种注册方式进行概念阐述以及演示实现步骤
(2)简述两种BroadcastReceiver的类型(为后续注册方式的对比做准备)
(3)在默认广播类型下设置优先级和无优先级情况下两种注册方式的比较
(4)在有序广播类型下两种注册方式的比较
(5)通过接受打电话的广播,在程序(Activity)运行时和终止运行时,对两种注册方式的比较
(6)总结两种方式的特点
一、静态和动态注册方式
? 构建Intent,使用sendBroadcast方法发出广播定义一个广播接收器,该广播接收器继承BroadcastReceiver,并且覆盖onReceive()方法来响应事件注册该广播接收器,我们可以在代码中注册(动态注册),也可以AndroidManifest.xml配置文件中注册(静态注册)。
案例解析:
1.主界面设计

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:orientation="vertical"android:layout_height="match_parent"tools:context=".MainActivity"><Buttonandroid:id="@+id/btnSend"android:layout_width="match_parent"android:layout_height="wrap_content"android:insetTop="16dp"android:text="发松" />
</LinearLayout>

如图:

2.后台代码设计

package com.aaa.btdemo02;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {//定义对象;村长:一样权威,光辉的存在,拿着大喇叭,讲话;Button btnSend;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main); //取值btnSend=(Button) findViewById(R.id.btnSend);//这对这个按钮做监听事件;发送信息,大喇叭...btnSend.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent=new Intent();//设置intent的动作;后面字符串是自定义的intent.setAction("android.intent.action.receiverdata");intent.putExtra("msg","羊村各位村民开会了");MainActivity.this.sendBroadcast(intent);}});}
}

3.创建自己的广播接收器类

package com.aaa.btdemo02;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import android.util.Log;
public class MyReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {//接受广播if(intent==null)return;//intent:接受从主端传递过来的数据,action数据;String action=intent.getAction();//针对上述做判断;第一个判断是否为空也可以写成action.isEmptyif(!TextUtils.isEmpty(action)&&"android.intent.action.receiverdata".equals(action)){String msg=intent.getStringExtra("msg");//不习惯可以使用BundleLog.i("喜洋洋-->",msg);}}
}

4.注册广播

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.aaa.btdemo02"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.Btdemo02"><activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><receiver android:name=".MyReceiver"android:exported="true"><intent-filter><!-- 自定义的action名 --><action android:name="android.intent.action.receiverdata"/></intent-filter></receiver></application></manifest>

5.运行效果

在这里插入图片描述

安卓四大组件之二广播相关推荐

  1. 安卓四大组件之Activity

    1.Activity简介 它是安卓四大组件之一,用于界面的展示,是最贴切用户的一个组件,所以说它的操作 都与用户密切相关,可以通过setContentView来显示制定控件.通常情况下,在一个安卓应用 ...

  2. 【Android】安卓四大组件之内容提供者

    [Android]安卓四大组件之内容提供者 1.关于内容提供者 1.1 什么是内容提供者 内容提供者就是contentProvider,作用有如下: 给多个应用提供数据 类似一个接口 可以和多个应用分 ...

  3. 【Android】安卓四大组件之Activity(一)

    [Android]安卓四大组件之Activity(一) 前言 Activity是Android学习中的一个重要组件,想要对其进行系统的了解可以分为几块内容,这一大章节的内容是有关于activity之间 ...

  4. Android 四大组件 -- BroadcastReceiver(广播)

    Android开发的四大组件分别是: 活动(activity),用于表现功能; 服务(service),后台运行服务,不提供界面呈现: 广播接受者(BroadcastReceive),勇于接收广播: ...

  5. Android 安卓 四大组件

    Android开发的四大组件  Android四大组件分别为activity.service.content provider.broadcast receive  一.Activity    Act ...

  6. 安卓四大组件(小白篇)

    安卓的四大组件分别是: 1,活动activity,用于表现服务: 2,服务service,后台运行服务,不提供界面呈现: 3,广播接受者(broadcast receive),用于接受广播: 4,内容 ...

  7. 安卓四大组件之Receiver

    广播接收器: 安卓中的广播接收器类似于我们生活中的收音机 广播的特点是 一对多 单向传播 作用:设计了广播接收机制 ,可以实现系统发一些手机的状态信息给所有的应用 首先说广播的发送方式: 1.有序的广 ...

  8. 安卓四大组件之广播组件(Broadcast)

    1.广播是什么 之所以叫做广播,就是因为它只负责"说"而不管你"听不听",也就是不管你接收方如何处理. 广播可以一对多,一人发送广播,多人接收处理 Broadc ...

  9. 安卓四大组件之—— BroadcastReceiver

    初识广播 什么是广播? Broadcast直译广播,我们举个形象的例子来帮我理解下BroadcastReceiver,记得以前读书 的时候,每个班级都会有一个挂在墙上的大喇叭,用来广播一些通知,比如, ...

最新文章

  1. java使用BigDecimal 处理商业精度及高精度详解
  2. vue cli3.0 引入eslint 结合vscode使用
  3. [力扣leetcode319]灯泡问题
  4. Java实例——基于jsoup的简单爬虫实现(从智联获取工作信息)
  5. Fiori Elements value help selection pass back
  6. hibernate保存mysql乱码_hibernate保存数据到mysql时的中文乱码问题
  7. css3动画保持状态不变
  8. Bailian3258 兔子产子【递推+打表】
  9. Linux系统编程—— fork() 函数详解
  10. 【转】关于DLL的一点介绍
  11. 外贸单证管理系统如何解决企业制单问题
  12. MySQL大略学习(二) 表格的操作 增删查改
  13. MySQL备份文件.ibd、.frm、.MYD、.MYI的恢复教程
  14. 如何在linux系统中安装虚拟机?
  15. 移动支付难倒老年人 如何让他们不被时代抛弃?
  16. 深圳核芯物联蓝牙aoa技术培训线上线下齐发力,修炼内功,蓄势待发高精度定位行业的头部公司
  17. xunsearch开发流程(三)
  18. 组合逻辑中的 竞争冒险问题
  19. 智慧路灯杆在智慧科技园的应用方案
  20. 8z Python编程语言与测试框架 - 软件测试

热门文章

  1. Spring boot 自定义banner
  2. Flume 1.7 源码分析(一)源码编译
  3. Kafka单机、集群模式安装详解(二)
  4. 工厂方法模式_工厂方法模式
  5. Effective Java之静态工厂代替构造器(一)
  6. 03.body_search
  7. leetCode--733.图像渲染
  8. CSS常用选择器、伪元素选择器、伪类选择器大全——响应式Web系列学习笔记
  9. UVa1588 | 算法竞赛入门经典(第二版) 习题3-11 换低档装置
  10. excel 电阻并联计算_电阻器的构成及取代原则