一:什么是BroadcastReceiver

Broadcast(广播)是一种广泛运用于在应用程序之间一步传播消息的机制
系统消息
Android系统发出的,电池不足、来电信息等
自定义消息
第三方应用发出的广播消息

广播消息本质上就是一个Intent对象
Intent是一对一的通信,广播消息是一对多的通信

BroadcastReceiver用于接受并处理广播消息
BroadcastReceiver没有用户界面
借助其他方式和用户交互,例如,启动Activity、使用Notification等

二.广播消息的处理流程

1.广播消息的处理分为三个环节:1.消息发送  2.BroadcastReceiver注册   3.消息处理

2.系统广播都被定义为android.content.Intent中的Action常量

3.利用BroadcastReceiver实现onReceive方法 。捕获系统广播ACTION_BOOT_COMPLETED可以轻松实现开机后程序自动运行

4.在AndroidManifest.xml文件中增加应用权限声明

<uses-permission android:name="com.mybroadcast.permission"/>

广播消息发送方式有多种
无序广播:sentBroadcast(),效率高,但是消息处理器之间没有关联
有序广播:sendOrderedBroadcast(),可以传递处理数据
持续广播:sendStickyBroadcast()发送的广播一直存在

三.发送一个普通广播

1.发送一个普通广播

//发送一个普通广播(1:发广播,2:注册一个接收者,3:处理广播)
public void send_broadcast(View iew){
Intent intent=new Intent();
intent.setAction("com.gdnf.broadcast_1");//自定义一个广播地址
intent.putExtra("message","2018年1月1号放假一天");
//开始广播
sendBroadcast(intent,"com.mybroadcast.permission");
}

2.静态注册一个接收者

 <!--静态注册一个广播接收者-->
<receiver
android:permission="com.mybroadcast.permission"
android:name="com.example.broadcast_receiver.Broadcast_Receiver_1">
<!--过滤接收什么样的广播-->
<intent-filter>
<action android:name="com.gdnf.broadcast_1"/>
</intent-filter>
</receiver>

3.定义一个广播接收者

/**
* 定义了一个广播接收者
*/
public class Broadcast_Receiver_1 extends BroadcastReceiver{ //对接收到的广播进行处理
@Override
public void onReceive(Context context, Intent intent) {
Log.i("Broadcast_Receiver_1","Broadcast_Receiver_1接收到广播");
String message=intent.getStringExtra("message");
Log.i("Broadcast_Receiver_1","Broadcast_Receiver_1收到消息:"+message);
}
}

四.发送一个有序广播

1.

   //发送有序广播
public void send_order_broadcast(View view){
Intent intent=new Intent("com.gdnf.broadcast_order"); sendOrderedBroadcast(intent,null,null,null,0,"发放1万过年补贴",null);
 }

2.注册接收者,并且声明接收者收到广播的先后顺序

priority降序排列,值最大的,最先收到广播。依次类推
        <receiver android:name="com.example.broadcast_receiver.OrderBroadcast_1">
<intent-filter android:priority="10">
<action android:name="com.gdnf.broadcast_order"/>
</intent-filter>
</receiver>
<receiver android:name="com.example.broadcast_receiver.OrderBroadcast_2">
<intent-filter android:priority="9">
<action android:name="com.gdnf.broadcast_order"/>
</intent-filter>
</receiver>
<receiver android:name="com.example.broadcast_receiver.OrderBroadcast_3">
<intent-filter android:priority="8">
<action android:name="com.gdnf.broadcast_order"/>
</intent-filter>
</receiver>

3.以上面为例 priority="10"最先收到广播可以对广播内容进行修改后再把广播发送出去

public class OrderBroadcast_1 extends BroadcastReceiver {

    @Override
public void onReceive(Context context, Intent intent) {
String message=intent.getStringExtra("message");
String date=getResultData();//获取数据
Log.i("OrderBroadcast_1","OrderBroadcast_1第一个收到广播"+message);
Log.i("OrderBroadcast_1","通知内容是:"+date);
setResultData("发放3000过年补贴");
}
}

priority="9"接收到的内容已经改变,依次类推。

Android基础_BroadcastReceiver的更多相关文章

  1. Android基础测试题(四)

    看了前两道题大家有没有发现,测试题少了(一),大家猜猜测试题(一)是什么? Android基础测试题(四): 需求: 建一个方法,格式化输出2016-11-14 10:15:26格式的当前时间,然后截 ...

  2. Android基础测试题(二)

    今天给大家带来的是Android基础测试题(二) 题目要求: 定义一个5位长度的整型数组并初始化,然后构建方法根据用户传入的数字判断是否存在数组中,如果存在,返回所在位置,如果不存在,返回-1 首先第 ...

  3. Mono.Android 基础

    Mono.Android 基础 (地址) Mono.Android项目结构是 — Project + Assets + Resources + drawable + layout + values R ...

  4. 深入理解gradle编译-Android基础篇

    深入理解gradle编译-Android基础篇 导读 Gradle基于Groovy的特定领域语言(DSL)编写的一种自动化建构工具,Groovy作为一种高级语言由Java代码实现,本文将对Gradle ...

  5. android基础---->JSON数据的解析

    上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...

  6. 基础4 Android基础

    基础4 Android基础 1. Activity与Fragment的生命周期. Activity生命周期 打开应用 onCreate()->onStart()->onResume 按BA ...

  7. Android基础总结(8)——服务

    服务(Service)是Android中实现程序后台运行的解决方案,它非常适合用于去执行哪些不需要和用户交互而且还要长期运行的任务.服务的运行不依赖任何用户界面,即使当程序被切换到后台,或者用户打开了 ...

  8. 【Xamarin开发 Android 系列 4】 Android 基础知识

    原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...

  9. Android基础_web通信3

    在Android基础_web通信2中,我运用的JSONObject是Android原生的json类,通过import org.json.JSONObject来导入. 还有另外一种更简单的方法,就是用G ...

随机推荐

  1. Python编程和 Lua编程的比较

    Python编程和 Lua编程的比较 2016.4.21 定义函数: python: def functionname( parameters ): "函数_文档字符串" func ...

  2. java爬虫简单实现

    package WebSpider; import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt ...

  3. 《写给大家看的设计书(第3版)》【PDF】下载

    <写给大家看的设计书(第3版)>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196355 内容简介 <写给大家看的设计书&g ...

  4. 数据分析与展示——Pandas数据特征分析

    Pandas数据特征分析 数据的排序 将一组数据通过摘要(有损地提取数据特征的过程)的方式,可以获得基本统计(含排序).分布/累计统计.数据特征(相关性.周期性等).数据挖掘(形成知识). .sort ...

  5. iOS MJRefresh下拉、上拉刷新自定义以及系统详细讲解

    更新: MJRefresh 更新功能,默认根据数据来源 自动显示 隐藏footer,这个功能可以关闭 DoctorTableView.mj_footer.automaticallyHidden = N ...

  6. JavaWeb之数据源连接池(1)---DBCP

    何为数据源呢?也就是数据的来源.我在前面的一篇文章<JavaWeb之原生数据库连接>中,采用了mysql数据库,数据来源于mysql,那么mysql就是一种数据源.在实际工作中,除了mys ...

  7. [置顶] xamarin android自定义标题栏(自定义属性、回调事件)

    自定义控件的基本要求 这篇文章就当是自定义控件入门,看了几篇android关于自定义控件的文章,了解了一下,android自定义控件主要有3种方式: 自绘控件:继承View类,所展示的内容在OnDra ...

  8. NOI2009 植物大战僵尸

    啊一道好题感觉写得挺爽的啊这题这种有一点懵逼然后学了一点东西之后很明朗的感觉真是好!预处理参考 :http://www.cppblog.com/MatoNo1/archive/2014/11/01/1 ...

  9. 树链剖分X2

    1.ZJOI树的统计 板子题 因为初始化没打改了几个小时 改到双腿软着出的机房(身体素质感人 #include<iostream> #include<cstdio> #incl ...

  10. 嵌入式设计初体验:永远的hello,world

    目前,xilinx的zynq系列FPGA炒的火热,SOC成为FPGA发展的必然趋势.可见所有功能均用硬件描述语言设计是不科学的.硬件逻辑独有的并行性使其在实时处理和并行算法中占尽优势,但当执行串行操作 ...