Broadcast Receiver
(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相关推荐
- android 组件(activity,service,content provider,broadcast receiver,intent)详解
Android应用程序由若干个不同类型的组件组合而成,每一个组件具有其特定的安全保护设计方式,它们的安全直接影响到应用程序的安全.Android应用程序组件的主要类型有:活动(Activity),服务 ...
- 007 Android之Broadcast Receiver
文章目录 广播的概念 广播的类型 广播接收实例 IP拨号器 开机自启动 监听应用安装和卸载 广播的概念 现实中的广播:电视台发送广播,使用收听机可以收听广播,得到广播信息 Android中的广播:系统 ...
- Android静态安全检测 - Broadcast Receiver组件暴露
Broadcast Receiver组件暴露 - exported属性 一.android:exported 该属性用来标示,当前Broadcast Receiver是否可以从当前应用外部获取Rece ...
- Qt文档阅读笔记-Broadcast Receiver Example解析
这篇博文的例子是说明如何在局域网上搭建广播包接收端. 这里使用了Qt Network API,搭建本地广播包接收端. 结构如下: 代码如下: receiver.h #ifndef RECEIVER_H ...
- Qt文档阅读笔记-Broadcast Sender Example与Broadcast Receiver Example解析
目录 Broadcast Sender Example Broadcast Receiver Example Broadcast Sender Example 调用QtNetwork API实现发出广 ...
- Android 用 broadcast receiver组件实现音乐盒
Android 用 broadcast receiver详解用例 Android 用 broadcast receiver详解用例 一.BroadcastReceiver概述 1.BroadcastR ...
- Broadcast Receiver @
http://developer.android.com/reference/android/content/BroadcastReceiver.html 译文: http://www.2cto.co ...
- android 四大组件Broadcast Receiver
本文介绍Broadcast Receiver,包括几部分内容:Broadcast Receiver概述及实例.自定义Broadcast Receiver.Broadcast Receiver的实现细节 ...
- Broadcast Receiver的两种注册方法
在Android 中,Broadcast Receiver有两种注册形态,一种是在java文件中进行注册,方法如下: IntentFilter intentFilter = new IntentFil ...
最新文章
- 1.mysql数据库安装不成功的解决方案
- python3如何使用mysql_python3怎么用sqlalchemy操作mysql
- 实验楼 1. k-近邻算法实现手写数字识别系统--《机器学习实战 》
- Docker教程(二) Docker环境安装
- 谷歌免费GPU训练星际2AI好难?你需要份debug指南
- python定义字典对象时_Python对象类型之字典
- 6.解决循环依赖的问题
- 【渝粤教育】广东开放大学 学前儿童保育学 形成性考核 (40)
- CentOS部署OpenStack过程-网络服务
- 计算机网络第七版1-3
- java运行环境配置实验报告_java程序开发运行环境实验报告.doc
- 面试官的窒息逼问: 到底什么是面向接口编程?
- ​SIGIR 2022 | 港大、武大提出KGCL:基于知识图谱对比学习的推荐系统
- Win10 Microsoft Store无法安装程序解决方法
- 【文献翻译神器推荐】DeepL
- 如何用easyx播放音乐,插入图片
- 和ts一般怎么玩_AG首发大换血,成功复仇TS,发了工资的TS谁也打不赢?
- 关于 Photoshop 的在线使用
- 文件及文件夹 压缩 下载
- 学姐说 | 大学生如何自学短视频剪辑配音制作?