四大组件初始之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 ...
随机推荐
- DC-2靶机
DC-2 靶机获取:http://www.five86.com/ 靶机IP:192.168.43.197(arp-scan l) 攻击机器IP:192.168.43.199 在hosts文件里添加:1 ...
- Leader-Follower线程模型简介
参考58沈剑大神架构师之路上的文章,谈谈Leader-Follower线程模型: 上图就是L/F多线程模型的状态变迁点,共6个关键点: (1)线程有3种状态:领导leading,处理processin ...
- 8.15 day33 进程池与线程池_协程_IO模型(了解)
进程池和线程池 开进程开线程都需要消耗资源,只不过两者比较的情况线程消耗的资源比较少 在计算机能够承受范围之内最大限度的利用计算机 什么是池? 在保证计算机硬件安全的情况下最大限度地利用计算机 ...
- 【RabbitMQ】如何进行消息可靠投递【上篇】
说明 前几天,突然发生线上报警,钉钉连发了好几条消息,一看是RabbitMQ相关的消息,心头一紧,难道翻车了? [橙色报警] 应用[xxx]在[08-15 16:36:04]发生[错误日志异常],al ...
- web项目jsp中无法引入js问题
https://blog.csdn.net/C1042135353/article/details/80274685#commentBox 这篇文章超赞的,几个小时的时间看了这篇文章豁然开朗,瞬间懂了 ...
- 解决问题:安装Ubuntu时遇到nouveau sched_error问题
当我们在为有独立显卡gpu的电脑安装Ubuntu系统时,有可能会遇到nouveau sched_error问题. 方法一:安装系统时,开机出现dell图标时长按F12进入启动项选择界面, 然后选择UE ...
- C语言编程入门之--第五章C语言基本运算和表达式-part4
5.3.5 和二进制极为密切的运算符 本小节的运算符需要借助二进制概念来理解. 二进制数据中,比如一个字节的数据,它的十进制为228,二进制就为11100100,如图5.11, 注意:如果不懂怎么转换 ...
- OpenStack Telemetry系统架构及实践
1. 概述 早期OpenStack的计量功能由Ceilometer项目负责,后来Ceilometer一分为四,每个项目负责一个方面的工作.不得不说这是OpenStack开发中的一个特色,比如Cinde ...
- spring-boot-plus V1.2.2 发布,5 Minutes Finish CRUD
更新日志 CHANGELOG [V1.2.2-RELEASE] 2019.08.26
- vue父子组件通信高级用法
vue项目的一大亮点就是组件化.使用组件可以极大地提高项目中代码的复用率,减少代码量.但是使用组件最大的难点就是父子组件之间的通信. 子通信父 父组件 <template> <div ...