Android基础_BroadcastReceiver
一:什么是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的更多相关文章
- Android基础测试题(四)
看了前两道题大家有没有发现,测试题少了(一),大家猜猜测试题(一)是什么? Android基础测试题(四): 需求: 建一个方法,格式化输出2016-11-14 10:15:26格式的当前时间,然后截 ...
- Android基础测试题(二)
今天给大家带来的是Android基础测试题(二) 题目要求: 定义一个5位长度的整型数组并初始化,然后构建方法根据用户传入的数字判断是否存在数组中,如果存在,返回所在位置,如果不存在,返回-1 首先第 ...
- Mono.Android 基础
Mono.Android 基础 (地址) Mono.Android项目结构是 — Project + Assets + Resources + drawable + layout + values R ...
- 深入理解gradle编译-Android基础篇
深入理解gradle编译-Android基础篇 导读 Gradle基于Groovy的特定领域语言(DSL)编写的一种自动化建构工具,Groovy作为一种高级语言由Java代码实现,本文将对Gradle ...
- android基础---->JSON数据的解析
上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...
- 基础4 Android基础
基础4 Android基础 1. Activity与Fragment的生命周期. Activity生命周期 打开应用 onCreate()->onStart()->onResume 按BA ...
- Android基础总结(8)——服务
服务(Service)是Android中实现程序后台运行的解决方案,它非常适合用于去执行哪些不需要和用户交互而且还要长期运行的任务.服务的运行不依赖任何用户界面,即使当程序被切换到后台,或者用户打开了 ...
- 【Xamarin开发 Android 系列 4】 Android 基础知识
原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...
- Android基础_web通信3
在Android基础_web通信2中,我运用的JSONObject是Android原生的json类,通过import org.json.JSONObject来导入. 还有另外一种更简单的方法,就是用G ...
随机推荐
- 关于redis的使用
距离上次写博客有两三个月了,这段时间去了新公司上班,忙了很多.接手了一个项目,刚好用到redis,先总结下遇到的问题(跟redis相关的问题): 1.列表问题 举例:展示商品列表,但是要先展示运营置顶 ...
- [.Net跨平台]部署DTCMS到Jexus遇到的问题及解决思路---部署
上一篇我们环境已经准备完成,此时可以部署了,我们就以dtcms作为例子,http://bbs.dtcms.net/forum.php?mod=viewthread&tid=2420&e ...
- 《程序员面试金典(第5版)》【PDF】下载
<程序员面试金典(第5版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382252 内容简介 本书作者Gayle Laakma ...
- 小型Web页打包优化(下)
之前我们推送了一篇小型Web项目打包优化文章,(链接),我们使用了一段时间, 在这过程中我们也一直在思考, 怎么能把结构做的更好.于是我们改造了一版, 把可以改进的地方和可能会出现的问题, 在这一版中 ...
- webpack 3.X学习之多页面打包
简介 我们开发不可能只写一个页面,每次都要写很多页面,这时为了开发效率,我们使用前端自动化工具webpack,那么webpack是如何打包页面的呢?又是如何打包多页面的呢? 单页面打包 我们知道要打包 ...
- mac上虚拟机安装旧版本的macosx 10.8
前言 由于测试的需要,需要10.8的macosx,但又不想降级自己mac版本,所以还是装虚拟机,Parallels Desktop试验了安装不了osx,就换VMware Fusion,发现是可以的. ...
- C++ 头文件系列(set)
简介 头文件包含set.multiset两个类模版,这里要描述的概念与map非常相似,甚至连成员函数都几乎一样,所以这篇随笔会很短. set set如果翻译成中文应该是集合的意思,这里更确切的说是唯一 ...
- PredictionIO+Universal Recommender快速开发部署推荐引擎的问题总结(1)
1,PredictionIO如果用直接下载的0.11.0-incubating版本,存在一个HDFS配置相关的BUG 执行pio status命令时会发生如下的错误: -- ::, ERROR org ...
- HTML5学习知识点
一.文档问题 1.html5新标签:section.header.footer.nav.aside.blockquote.q.fieldest.figure.address.article.detai ...
- Apache Avro# 1.8.2 Specification (Avro 1.8.2规范)二
h5 { text-indent: 0.71cm; margin-top: 0.49cm; margin-bottom: 0.51cm; direction: ltr; color: #000000; ...