在进行应用设计时,需要获取很多环境参数,像电量,音量,亮度,网络等。相比较每次去询问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的更多相关文章

  1. 四大组件初始之ContentProvider

    在android中,除了存放在外部存储的共享目录下的数据,各个应用的数据库文件,资源等都是私有的,其他应用没有访问权限.所以有了ContentProvider,不包含功能逻辑,用于不同应用进程间共享数 ...

  2. [置顶] Android四大组件之BroadcastReceiver

    Android四大组件之BroadcastReceiver Broadcast Receiver 广播接收器,是一种负责接收广播消息并对消息做出响应的组件,和Service一样并不提供与用户交互的UI ...

  3. android四大组件之Broadcast

    广播的概念 现实中:我们常常使用电台通过发送广播发布消息,买个收音机,就能收听 Android:系统在产生某个事件时发送广播,应用程序使用广播接收者接收这个广播,就知道系统产生了什么事件.Androi ...

  4. 第九章:四大组件之Broadcast Receiver

    第九章:四大组件之Broadcast Receiver   一.广播的功能和特征 广播的生命周期很短,经过调用对象-->实现onReceive-->结束,整个过程就结束了.从实现的复杂度和 ...

  5. android 四大组件Broadcast Receiver

    本文介绍Broadcast Receiver,包括几部分内容:Broadcast Receiver概述及实例.自定义Broadcast Receiver.Broadcast Receiver的实现细节 ...

  6. Android 四大组件之service与Broadcast

    Android 四大组件之一:service: Service有五个生命周期:onCreat,onStartCommand, onBind,onUnbind, onDestroy 主要有绑定和非绑定两 ...

  7. 【朝花夕拾】四大组件之(一)Broadcast篇

    前言 笔者最近在探究ANR及源码的过程中,发现对Broadcast的一些应用层面上的知识有的感觉比较生疏,有的记忆不准确,有的认识不完整.所谓“基础不牢,地动山摇”,于是就梳理了一下Broadcast ...

  8. [Android基础]Android四大组件之BroadCast

    BroadCast的定义: 广播是一种订阅--通知 事件,广播接收者向Android系统 register (订阅广播),广播发送者向Adnroid系统 sendBroadCast(发送广播),然后A ...

  9. 插件占坑,四大组件动态注册前奏(三) 系统BroadCast的注册发送流程

    转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/52204143 前言:为什么要了解系统Activity,Service,BroadCas ...

随机推荐

  1. 常量Const

    常量Const YEAR = 2019 # 全部大写的变量名为常量 注释 给不能理解的写一个描述 便于理解 增强可读性 三种形式 单行(当行)注释:# 只注释一行 不能换行 注释的代码不执行 不使用 ...

  2. Java虚拟机(二)-对象创建

    这一篇大致说明一下,对象在Java堆中对象分配.内存布局以及访问定位 1.对象的创建 虚拟机在遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引 ...

  3. golang常用的http请求操作

    之前用python写各种网络请求的时候写的非常顺手,但是当打算用golang写的时候才发现相对来说还是python的那种方式用的更加顺手,习惯golang的用法之后也就差别不大了,下面主要整理了常用的 ...

  4. Fabric项目学习总结

    1.Hyperledger Fabric的基本架构 2.PKI机制

  5. .NET中的缓存

    构建高性能的应用程序的非常重要一项就是使用缓存.使用缓存可以避免重新从读取服务器端读取数据,节省数据从客户端到服务器间往返的时间,同时也减轻了服务器数据存取的压力.如果客户端非常频繁地读取服务器上的数 ...

  6. SQL Server检索存储过程的结果集

    目的:检索过滤执行存储过程的结果集 如下介绍两个常用的方法,但是都需要申明表结构:不知道是否有更简便的方法,如有更好的方法,请不吝赐教. 以系统存储过程sp_who2为例: 方法1:使用临时表 --1 ...

  7. HBase 系列(四)—— HBase 集群环境配置

    一.集群规划 这里搭建一个 3 节点的 HBase 集群,其中三台主机上均为 Regin Server.同时为了保证高可用,除了在 hadoop001 上部署主 Master 服务外,还在 hadoo ...

  8. springboot整合html时的页面的跳转404

    在用springboot对html的页面进行渲染时,页面找不到报404(type=Not Found, status=404)., 解决办法:是在ctroller层加相应的           @Re ...

  9. Linux--进程管理--06

    1.操作系统的基础 调用:kernel通过给应用程序提供system call的方式来提供硬件资源: 注意:应用程序也包括库文件 库文件是运行在ring0上的一段程序代码,不对客户直接提供应用 2.程 ...

  10. XMLHttpRequest的概述

    XMLHttpRequest的概述 一.前言 XMLHttpRequest 最早是在IE5中以ActiveX组件的形式实现的.非 W3C 标准. 创建XMLHttpRequest对象(由于非标准所以实 ...