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的主要内容,如果未能解决你的问题,请参考以下文章