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 ...
随机推荐
- java做成windows服务,电子秤例子,开机自动启动
使用Java Service Wrapper工具制作 1.windows32位下载地址 https://sourceforge.net/projects/wrapper/files/ 2.window ...
- 个推demo
官网文档更详细,这里是只做个测试 http://docs.getui.com/server/java/start/ 全部推送(针对app应用) public static final String a ...
- dubbo+zookeeper+jsp+springmvc+spring+mybatis+mysql+maven完整示例
项目分为三部分,这里分为三个maven项目(基于web,所以最后一个为maven创建的web项目) 1.接口定义以及实体类定义(api+pojo) --- maven创建java项目,打包成jar 2 ...
- Python 3.6.3 利用Dlib 19.7库进行人脸识别
0.引言 自己在下载dlib官网给的example代码时,一开始不知道怎么使用,在一番摸索之后弄明白怎么使用了: 现分享下 face_detector.py 和 face_landmark_detec ...
- 为什么epoll会那么高效
参考(原文简直超赞):https://zhidao.baidu.com/question/687563051895364284.html下面是我结合原文写的,为了便于自己理解:关于阻塞和非阻塞的理解可 ...
- 如何在阿里云linux上部署java项目
前2天把git练了下,敲了很多命令,也借助图形界面增强自己的理解,乘着余热把linux在熟悉下.然后想起以前婷主有让我帮忙搭建的阿里云服务器,所以就想自己试着在阿里云的linux上搭建自己的jav ...
- C:指针函数一些误区
当我们学完指针,知道每个数在内存中都占有一定的字节,也就是地址,才有取地址符号&,所以要交换两个数必须把这两个数所对应的内存互换,比如a=2;b=3;要让它们互换且输出,我们用一个函数来试试 ...
- 查找 GPU 计算能力
你能在这里找到你的 GPU 的计算能力: https://en.wikipedia.org/wiki/CUDA#Supported_GPUs
- “乐”动人心--2017年10款最佳音乐类APP设计盘点
在上下班的路上,听几首自己喜欢的音乐来打发无聊的等公交车和地铁的时间是现代年轻人的常态.音乐作为最能鼓动人心的"语言",也成为了人们在互联网生活里占比例最高的消费活动之一,一款好看 ...
- [解决方案]WebAPI+SwaggerUI部署服务器后,访问一直报错的问题
项目的背景:制作一批接口用来给前台app或者网站提供服务,因为WebApi是最近几年来比较流行和新颖的开发接口的方式,而且又属于轻型应用,所以选用它 部署的过程:建立了WebAPI项目并使用Swagg ...