四大组件初始之Broadcast
在进行应用设计时,需要获取很多环境参数,像电量,音量,亮度,网络等。相比较每次去询问android这些信息改变了吗.让Android告诉我们,这些信息改变了更加合理。只要这些信息改变,Android通过就以广播的方式通知各个应用。当然前提是应用告诉android,应用需要这些信息。
一、Receiver
我们在应用中怎么告诉android,我们需要知道网络,电量是否改变呢?向系统注册一个该类型的广播接收器,系统就会告诉你这些消息了。注册广播可以在程序运行的时候动态注册销毁,也可以在程序运行前注册。
1、 动态注册销毁
假如我要接收音量改变的消息,首先要有个Receiver表示收到消息之后的动作。

然后就是注册了。通常在start里面注册。使用intent filter设置要接收的消息类型。

有注册就有销毁,在stop里面销毁。

在音量改变之后,android会自己调用在receiver中方法,因为我们已经注册了。
2、 静态注册
静态与动态的区别,在于静态是在清单文件里面向android注册。程序运行前就已经注册。
首先也是需要一个处理消息的Receiver,比如一个处理开机消息的Receiver,收到开机消息之后,就启动一个后台服务。

之后就在清单文件里面注册。

需要注意的是,接收这个消息需要声明权限。

二、发送自己的广播
上面谈到的消息都是android发出的,假如我们要在某一个时刻发一个自己的消息。可以使用Context.sendBroadcast或者Context.sendOrderedBroadcast发送,消息内容要借助intent。
1、 普通广播
使用Context.sendBroadcast发送的广播就是普通广播。发送广播需要通过android,这种模式下,android会把你发送的消息转发给所有注册了该消息的应用。
2、 有序广播
使用Context.sendOrderedBroadcast发送的广播叫有序广播。Android在转发的时候,先发给优先级高的Receiver。优先级在注册的时候通过intent设定。Receiver收到消息后可以调用abortBroadcast终止广播继续传播。还可以通过setResult为该广播添加附带消息。在优先级低的Receiver中调用getResultData等方法得到附带消息。
三、其他
需要注意,作为四大组件之一,Receiver同样运行在主线程。一个Receiver长时间运行就会被android干掉。这个时间不会超过10s。
四大组件初始之Broadcast的更多相关文章
- 四大组件初始之ContentProvider
在android中,除了存放在外部存储的共享目录下的数据,各个应用的数据库文件,资源等都是私有的,其他应用没有访问权限.所以有了ContentProvider,不包含功能逻辑,用于不同应用进程间共享数 ...
- [置顶] Android四大组件之BroadcastReceiver
Android四大组件之BroadcastReceiver Broadcast Receiver 广播接收器,是一种负责接收广播消息并对消息做出响应的组件,和Service一样并不提供与用户交互的UI ...
- android四大组件之Broadcast
广播的概念 现实中:我们常常使用电台通过发送广播发布消息,买个收音机,就能收听 Android:系统在产生某个事件时发送广播,应用程序使用广播接收者接收这个广播,就知道系统产生了什么事件.Androi ...
- 第九章:四大组件之Broadcast Receiver
第九章:四大组件之Broadcast Receiver 一.广播的功能和特征 广播的生命周期很短,经过调用对象-->实现onReceive-->结束,整个过程就结束了.从实现的复杂度和 ...
- android 四大组件Broadcast Receiver
本文介绍Broadcast Receiver,包括几部分内容:Broadcast Receiver概述及实例.自定义Broadcast Receiver.Broadcast Receiver的实现细节 ...
- Android 四大组件之service与Broadcast
Android 四大组件之一:service: Service有五个生命周期:onCreat,onStartCommand, onBind,onUnbind, onDestroy 主要有绑定和非绑定两 ...
- 【朝花夕拾】四大组件之(一)Broadcast篇
前言 笔者最近在探究ANR及源码的过程中,发现对Broadcast的一些应用层面上的知识有的感觉比较生疏,有的记忆不准确,有的认识不完整.所谓“基础不牢,地动山摇”,于是就梳理了一下Broadcast ...
- [Android基础]Android四大组件之BroadCast
BroadCast的定义: 广播是一种订阅--通知 事件,广播接收者向Android系统 register (订阅广播),广播发送者向Adnroid系统 sendBroadCast(发送广播),然后A ...
- 插件占坑,四大组件动态注册前奏(三) 系统BroadCast的注册发送流程
转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/52204143 前言:为什么要了解系统Activity,Service,BroadCas ...
随机推荐
- iview自定义实现多级表头
最近更新: 2018-07-19 注意:最新版iview已经提供多级表头功能 参考 原理:利用多个Table组件通过显示和隐藏thead和tbody来拼接表格(较粗暴) html <div st ...
- 基于SMS短信平台给手机发送短信
JAVA发送手机短信,我知道的有三种方式,恰逢项目需求,自己整理了基于SMS的短信发送,其他两种这里就说说一下 使用webservice接口发送手机短信,这个可以使用sina提供的webservice ...
- temperatureConversion2
Solution: #方法一:字符串与列表的相互转换和它们的基本函数操作 n = input() if n[0] in {"C","c"}: a= list(n ...
- Linux expect 介绍和用法
expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信. expect自动交互流程: spawn启动指定进程---expect获取指定关键字--- ...
- 一个最简单的通过自定义注解形式实现AOP的例子
1.首先实现AOP实例的第一步即声明切面类,两种方式(1.基于注解形式@Aspect,2.基于xml配置,一般都通过注解来声明切面类) 2.切入点表达式大致也有两种,一种是直接根据方法的签名来匹配各种 ...
- springboot中oracle的依赖添加失败的解决
由于Oracle授权问题,Maven3不提供oracle JDBC driver 步骤一:在pom中添加如下: <!--Oracle 驱动 --> <dependency> ...
- 内容协商在视图View上的应用【享学Spring MVC】
每篇一句 人生很有意思:首先就得活得长.活得长才能够见自己,再长就可以见众生 前言 在经过 前两篇 文章了解了Spring MVC的内容协商机制之后,相信你已经能够熟练的运用Spring MVC提供的 ...
- odoo添加顶部按钮实现自定义方法
一.效果图 自定义添加顶部按钮,实现自定义方法. 二.实现过程 1.需要用到三个文件,tree_view_button.js.tree_view_odoo.xml.base.xml三个文件,文件目录如 ...
- linux安装redis详细步骤(系统centos 6.4 )
1.安装redis 进入安装目录下载: cd /usr/local/redis wget http://download.redis.io/releases/redis-3.0.7.tar.gz 解 ...
- 独家解读 etcd 3.4版本 |云原生生态周报 Vol. 18
作者 | 酒祝.墨封.宇慕.衷源 关注"阿里巴巴云原生"公众号,回复关键词 "资料" ,即可获得 2019 全年 meetup 活动 PPT 合集及 K8s 最 ...