(1)Broadcast Receiver简介

Broadcast Receiver(广播接收者)用于接收广播Intent,广播Intent的发送是通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast()来实现的。通常一个广播Intent可以被订阅了此Intent的多个广播接收者所接收。

广播是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的广播进行过滤接收并响应的一类组件。

Broadcast Receiver自身并不实现图形用户界面,但是当它收到某个通知后,Broadcast Receiver可以启动Activity作为响应,或者通过NotificationMananger提醒用户,或者启动Service等等。

(2)Broadcast Receiver机制

在Android里面有各种各样的广播,比如电池的使用状态,电话的接收和短信的接收都会产生一个广播,应用程序开发者也可以监听这些广播并做出程序逻辑的处理。

(a)第一种注册方式:静态注册(以接收短信为例)

在AndroidManifest.xml中注册:

<receiver android:name =".MyBroadcastReceiver">
<intent-filter>
<action android:name ="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>

当然了需要权限:

<uses-permission android:name ="android.permission.RECEIVE_SMS"/>
<uses-permission android:name ="android.permission.SEND_SMS"/>

实现:

public class MyBroadcastReceiver extendsBroadcastReceiver {
String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(SMS_RECEIVED)) {
// 接收短信后相关处理;
}
}
} 

(b)第二种注册方式:动态注册

实现:

private BroadcastReceivermyBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// 相关处理
}
}; 

代码中注册:

IntentFilter intentFilter = newIntentFilter("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(myBroadcastReceiver,intentFilter);

(3)Broadcast Receiver生命周期

生命周期只有十秒左右,如果在onReceive()内做超过十秒内的事情,就会报ANR(Application NoResponse)程序无响应的错误信息。它的生命周期为从回调onReceive()方法开始到该方法返回结果后结束。

(4)Broadcast Receiver作用

你的应用可以使用它对外部事件进行过滤,只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力,例如闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。

(5)Broadcast Receiver注册方式区别

动态注册广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。也就是说哪怕app本身未启动,该app订阅的广播在触发时也会对它起作用。

Broadcast Receiver相关推荐

  1. android 组件(activity,service,content provider,broadcast receiver,intent)详解

    Android应用程序由若干个不同类型的组件组合而成,每一个组件具有其特定的安全保护设计方式,它们的安全直接影响到应用程序的安全.Android应用程序组件的主要类型有:活动(Activity),服务 ...

  2. 007 Android之Broadcast Receiver

    文章目录 广播的概念 广播的类型 广播接收实例 IP拨号器 开机自启动 监听应用安装和卸载 广播的概念 现实中的广播:电视台发送广播,使用收听机可以收听广播,得到广播信息 Android中的广播:系统 ...

  3. Android静态安全检测 - Broadcast Receiver组件暴露

    Broadcast Receiver组件暴露 - exported属性 一.android:exported 该属性用来标示,当前Broadcast Receiver是否可以从当前应用外部获取Rece ...

  4. Qt文档阅读笔记-Broadcast Receiver Example解析

    这篇博文的例子是说明如何在局域网上搭建广播包接收端. 这里使用了Qt Network API,搭建本地广播包接收端. 结构如下: 代码如下: receiver.h #ifndef RECEIVER_H ...

  5. Qt文档阅读笔记-Broadcast Sender Example与Broadcast Receiver Example解析

    目录 Broadcast Sender Example Broadcast Receiver Example Broadcast Sender Example 调用QtNetwork API实现发出广 ...

  6. Android 用 broadcast receiver组件实现音乐盒

    Android 用 broadcast receiver详解用例 Android 用 broadcast receiver详解用例 一.BroadcastReceiver概述 1.BroadcastR ...

  7. Broadcast Receiver @

    http://developer.android.com/reference/android/content/BroadcastReceiver.html 译文: http://www.2cto.co ...

  8. android 四大组件Broadcast Receiver

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

  9. Broadcast Receiver的两种注册方法

    在Android 中,Broadcast Receiver有两种注册形态,一种是在java文件中进行注册,方法如下: IntentFilter intentFilter = new IntentFil ...

最新文章

  1. 1.mysql数据库安装不成功的解决方案
  2. python3如何使用mysql_python3怎么用sqlalchemy操作mysql
  3. 实验楼 1. k-近邻算法实现手写数字识别系统--《机器学习实战 》
  4. Docker教程(二) Docker环境安装
  5. 谷歌免费GPU训练星际2AI好难?你需要份debug指南
  6. python定义字典对象时_Python对象类型之字典
  7. 6.解决循环依赖的问题
  8. 【渝粤教育】广东开放大学 学前儿童保育学 形成性考核 (40)
  9. CentOS部署OpenStack过程-网络服务
  10. 计算机网络第七版1-3
  11. java运行环境配置实验报告_java程序开发运行环境实验报告.doc
  12. 面试官的窒息逼问: 到底什么是面向接口编程?
  13. ​SIGIR 2022 | 港大、武大提出KGCL:基于知识图谱对比学习的推荐系统
  14. Win10 Microsoft Store无法安装程序解决方法
  15. 【文献翻译神器推荐】DeepL
  16. 如何用easyx播放音乐,插入图片
  17. 和ts一般怎么玩_AG首发大换血,成功复仇TS,发了工资的TS谁也打不赢?
  18. 关于 Photoshop 的在线使用
  19. 文件及文件夹 压缩 下载
  20. 学姐说 | 大学生如何自学短视频剪辑配音制作?

热门文章

  1. 将项目同时托管到Github和Git@OSC
  2. 地球椭球体与大地基准面的关系
  3. 真正的不需注册不需购买不需花钱的数据恢复软件
  4. 2021年幼儿教师结构化面试:小朋友不乖,怎么与家长沟通?
  5. 解决安装新版Qt Creator 后Kits无配置信息的问题
  6. 使用Python,OpenCV进行银行支票数字和符号的OCR
  7. Linux系统IO分析工具之iotop
  8. 题目十:从字符串2中找出字符串1中的所有字符并按ASCII排序
  9. OpenSSL 生成证书
  10. 机器学习入门编程环境配置