在进行应用设计时,需要获取很多环境参数,像电量,音量,亮度,网络等。相比较每次去询问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. 欢迎加入我的知识星球:C语言解惑课堂

    我在知识星球上开通了一个有关C语言基础答疑解惑的星球,它叫做:“C语言解惑课堂”.看这名字你就知道虽然有点俗,俗才贴近你的真正需求嘛!这是一个专门帮助C语言初学者答疑解惑的课堂.嗯~~~,关于这个星球 ...

  2. Sublime Text 3 使用手册

    Ctrl+Shift+P:打开命令面板 Ctrl+P:搜索项目中的文件 Ctrl+G:跳转到第几行 Ctrl+W:关闭当前打开文件 Ctrl+Shift+W:关闭所有打开文件 Ctrl+Shift+V ...

  3. Oracle中的通用函数

    1.nvl(列,默认值)函数处理null select nvl(null,3),nvl(4,3) from dual    结果显示为3,4.因为nvl中的第一个为null时,返回结果为第二个值,第一 ...

  4. Ajax前台返回JSON数据后再Controller中直接转换成类型使用,后台接收json转成实体的方法

    之前写过一篇记录文章,写的是将一个比较复杂的数据结构在前台组合起来后传递到后台. 当时并不太了解@RequestBody,也并没有使用js提供的JSON.stringify()方法 所有都是自己写的, ...

  5. vector function trmplate

    /* vector function template programmer:qpz */ #include <iostream> #include <vector> #def ...

  6. 常用Linux备份

    用于备份的Tar 备份工具Tar是以前备份文件的可靠方法,几乎可以工作于任何环境中,Linux老用户一般都信赖它. Linux中以.tar结尾的文件都是用tar创建的.它的使用超出了单纯的备份,可用来 ...

  7. centos7搭建hadoop3.*.*系列

    最近搭建这个hadoop踩过不少坑,先是配置JDK搞错路径(普通用户和root用户下的路径不同),再就是hadoop版本不同导致的启动错误,网上找到的是hadoop2.*.*的版本,但是我安装的had ...

  8. egret之弹幕

    要实现弹幕功能,首先需要将弹幕配置成配置表.然后代码随机生成. /**生成单个弹幕 */ private showCaptionAnim(captionText: string) { egret.lo ...

  9. JSP指令、标签以及中文乱码

    JSP指令.标签以及中文乱码 一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. JSP指令的基本 ...

  10. PHP工程师学Python数据类型

    一.背景 继上篇文章比较了PHP与Python语法之后,这周又学习了Python数据类型,准备从通过这篇文章给自己进行一些总结,也给其他读者一些参考. 二.内容概要 字符串(str) 列表(list) ...