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 ...
随机推荐
- 自学Python2.5-基本数据类型-set集合
Python set集合 一. set集合概述 ①set集合,是一个无序且不重复的元素集合.②集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键.③集合支持用in和not in操作符检查成员 ...
- Effective Java 第三版——9. 使用try-with-resources语句替代try-finally语句
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- 通过 JS 判断页面是否有滚动条的简单方法
前言 最近在写插件的过程中,需要使用 JS 判断是否有滚动条,搜了一下,大致方法都差不多,但都有些啰嗦,代码不够简洁.最终通过参考不同方法,写了一个比较简单的方法.在判断滚动条的同时也需要计算滚动条的 ...
- ArcGIS 网络分析[1.4] 制作点线要素时需要注意的地方
有很多同学虽然成功做好了网络数据集,但是分析时会出现这样的问题: 这是为什么呢? 这有三个可能的原因: 1. 两个点之间所有的道路没有连通(问题出在点.线数据上). 2. 网络数据集出现了孤立的点位置 ...
- 关于git的一些理论知识
一.什么是版本控制器 好多刚用git的coder一说起git,就随口会说出版本控制器嘛,我问那是干嘛的,大部分人就回答上传代码的.然后会用,但是有些理论你问他们他们就不知道了,比如不是代码的文件就不能 ...
- node学习心得
此次学习主要使用的是基于nodejs平台的web应用开发框架. 一.express的工程结构 1.bin/www:express的执行入口,存放可执行文件: 2.node_modules:存放pack ...
- 基于Jmeter的PostgreSQL空间性能测试笔记
这是很早之前做过的一个测试,最近在整理postgresql测试相关的资料,所以也把它拿出来了与大家分享. 首先解释一下所谓的PostgreSQL空间性能,主要是基于postgis的空间数据导入性能,详 ...
- selenium爬取百度图片
一:简介 通过selenium模块,模拟火狐浏览器进行搜索下载操作. 二:脚本内容 # -*- coding:utf-8 -*- # 百度图片自动爬去 # Chrome浏览器类似,设置其options ...
- [E::hts_idx_push] NO_COOR reads not in a single block at the end 10 -1
在分析转录组数据时,用bowtie2比对生成的bam文件,下一步call peak使用m6Aviewer,需要bam文件的index文件.所以我直接敲命令 samtools index xx.bam ...
- Spring aop 注解参数说明
在spring AOP中,需要使用AspectJ的切点表达式语言来定义切点. 关于Spring AOP的AspectJ切点,最重要的一点是Spring仅支持AspectJ切点指示器(pointcut ...