一:什么是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. 大数据学习(8)Hive基础

    什么是Hive Hive是一个基于HDFS的查询引擎.我们日常中的需求如果都自己去写MapReduce来实现的话会很费劲的,Hive把日常用到的MapReduce功能,比如排序.分组等功能进行了抽象, ...

  2. [.Net跨平台]部署DTCMS到Jexus遇到的问题及解决思路---Linux环境搭建

    最近朋友托我帮忙研究如何把一个DTCMS部署到Linux下,经过1天的研究,部署基本成功,可能有些细节还未注意到,现在把心得分享一下.过程比预期的要简单 身为.Net程序员,这个问题的第一步可能就是如 ...

  3. 挑战App Store,微信通过“跳一跳”秀了一下“小程序”的肌肉

    2017年即将结束的时候,微信放了一个大招.随着最新的微信v6.6.1版本更新,基于小程序的"小游戏"板块正式上线.微信上首发的这款"小游戏"叫"跳一 ...

  4. 为什么epoll会那么高效

    参考(原文简直超赞):https://zhidao.baidu.com/question/687563051895364284.html下面是我结合原文写的,为了便于自己理解:关于阻塞和非阻塞的理解可 ...

  5. ReactNative布局样式总结

    flex number 用于设置或检索弹性盒模型对象的子元素如何分配空间 flexDirection enum('row', 'row-reverse' ,'column','column-rever ...

  6. Docker安装入门 -- 中间件镜像

    Docker安装入门 -- 中间件镜像 php-fpm 1.docker build -t csphere/php-fpm:5.4 .   //在当前目录下创建镜像 2.docker run -d - ...

  7. w 命令详解

    作用: 用于显示已经登录系统的用户列表, 并显示用户正在执行的指令. 执行这个命令可得知目前登入系统的用户有哪些人, 以及他们正在执行的程序.  单独执行w 命令会显示所有的用户, 您也可指定用户名称 ...

  8. 浅析Node.js的Event Loop

    目录 浅析Node.js的Event Loop 引出问题 Node.js的基本架构 Libuv Event Loop Event Loop Phases Overview Poll Phase The ...

  9. 2、各种折腾,安装交叉环境的gcc和qt,测试c++和qt程序

    本博文仅作本人操作过程的记录,留作备忘.自强不息 QQ1222698 1.安装gcc和qt 把光盘里带的gcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX2 ...

  10. Java自己动手写连接池一

    自己动手写连接池,废话不多说,直接上代码,读取配置文件 package com.kama.cn; import java.io.IOException;import java.io.InputStre ...