BroadcastReceiver
Posted 时空矩人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BroadcastReceiver相关的知识,希望对你有一定的参考价值。
BroadcastReceiver 广播接受者
android中, Broadcast是一种数据传递的方式/通信方式.
Brodadcast 是Android 系统组件之一
广播的特性
1. 由一个发送方, 若干接收方组成
2. 发送方与接收方存在匹配规则
广播的分类
1. 普通广播
2. 有序广播: 各个接受者在接收广播时会遵循一定的先后顺序接收广播
调用方式
Intent intent = new Intent(this, XXX.class);
intent.setAction("xxx"); // 这里需要在项目清单(Manifast.xml)中的intent-filter注册
sendBrodacast(intent);
发送广播
调用由ContextWrapper定义的sendBroadcast(Intent)方法.
发送广播时使用的Intent对象, 应该封装Action属性, 而广播接受者需要使用IntentFilter匹配该广播.
发送广播时, 也可以在Intent中封装需要传递的数据, 通常使用Intent的Extra属性
接收广播
1. 自定义类, 继承自BroadcastReceiver
2. 在AndroidManifest.xml 中的<application>节点下, 添加<receiver>节点对该广播接受者进行注册,
并在<receiver>节点下添加<intent-filter>子级节点, 用于匹配广播发送时的Intent对象
3. 重写广播接受者类中的onReceive()方法(可以在这个方法中获取广播传过来的数据, 或者一些其他处理, 实现对广播的处理
广播的用法一般使用内部类
如果是内部类, 不能直接在Manifest.xml 中的 intent-file中注册(静态注册), 需要通过代码动态注册
在程序中调用registerReceiver(BroadcastReceiver, IntentFilter)注册
静态注册 & 动态注册区别
静态注册: 通过AndroidManifest.xml注册 (常驻型: 一旦注册永久存在)
动态注册: 在程序中通过代码进行注册 (实时型: 只有当代码生效时存在, 如果代码过了就不存在了)
以上是关于BroadcastReceiver的主要内容,如果未能解决你的问题,请参考以下文章