Broadcast Receiver用于接收并处理广播通知(broadcast announcements)。多数的广播是系统发起的,如地域变换、电量不足、来电来信等。程序也可以播放一个广播。程序可以有任意数量的 broadcast receivers来响应它觉得重要的通知。broadcast receiver可以通过多种方式通知用户:启动activity、使用NotificationManager、开启背景灯、振动设备、播放声音等,最 典型的是在状态栏显示一个图标,这样用户就可以点它打开看通知内容。

通常我们的某个应用或系统本身在某些事件(电池电量不足、来电来短信)来临时会广播一个Intent出去,我们可以利用注册一个Broadcast Receiver来监听到这些Intent并获取Intent中的数据。当一个广播消息被Receiver监听到时,Android会调用它的onReceive()方法,并将包含消息的 Intent对象传给它。 onReceive中代码的执行时间不要超过10s,否则系统会出现ANR。(系统出现ANR的情况有两个:(1)、事件分发时超过5秒无响应;(2)、接收到消息后超过10秒没有处理完)

Receiver只在onReceive方法执行时是激活状态,只要onReceive一返回,Receiver就不再是激活状态了。Receiver进 程是被一个激活状态的broadcast receiver所保护而不被系统终止的,一旦onReceive返回,Receiver进程broadcast receiver所保护而变为一个空进程,空进程是可以在任意时刻被终止的。这就带来了一个问题:当响应一个广播信息的处理十分耗时的时候,那么就应该把 这个处理放在一个单独的线程里去执行,来保证主线程里的其他用户交互组件能够继续运行,而一旦这么做,当onReceive()唤起一个线程后就会马上返 回,这时就会把Receiver进程放到被终止的境地。解决这个问题的方案是在onReceive()里开始一个Service,让这个Service去 做这件事情,那么系统就会认为这个进程里还有活动正在进行。(receive到message会启动宿主进程,当返回后,如果没有其他交互,宿主进程会为empty,因此如果要长期运行宿主进程,就start service)。

在Activity中发送广播:

 123
      
Intent intent=new Intent();
intent.setAction("cn.smc.thm");
MainActivity.this.sendBroadcast(intent);

在Mainfest.xml中注册广播接收:

 12345
      
<receiver android:name=".BroadcastReceiverDemo1" >
<intent-filter>
<action android:name="cn.smc.thm" />
</intent-filter>
</receiver>

接收广播:

  1234567891011
      
public class BroadcastReceiverDemo1 extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
if (arg1.getAction().equals("cn.smc.thm")) {
Log.i("thm", "BroadcastReceiverDemo1 receive");
}
}
}

BroadcastReceiver(接收广播)相关推荐

  1. BroadcastReceiver 接收系统短信广播

    BroadcastReceiver 接收系统短信广播 /* 注册广播:    * |--静态注册  (在AndroidManifest .xml 中注册)  * <receiver androi ...

  2. android无法接收短信广播,Android BroadcastReceiver接收收到短信的广播

    一.知识介绍 1.broadcastReceiver是广播接受者,四大组件之一. 2.Android中内置了很多系统级别的广播,可以在应用程序中得到各种系统的状态信息. 3.使用场景: ①当手机没有电 ...

  3. [2021.11.6]使用BroadcastReceiver发送和接收广播

    1 BroadcastReceiver简介 BroadcastReceiver类是所有广播接收器的抽象基类,子类对接收的广播进行筛选并做出响应.广播接收器的生命周期短,当广播消息到达时,调用onRec ...

  4. Android移动开发检测网络状态并使用BroadcastReceiver(广播接收者)进行接收网络变化的后续处理

    在Android开发中,许多功能需要网络连接,所以在开发过程中需要进行手机网络的检测.而每做一个App,就要进行检测,那么我直接将检测网络状态的功能封装成一个类. 检测网络状态所需要的Api: Con ...

  5. Android——发送和接收广播

    一,发送广播 利用Intent来发送广播. 使用:在需要发送广播的地方创建一个Intent对象,将信息的内容和用于过滤的信息封装起来,通过以下三种方法将Intent广播出去: 1,Context.se ...

  6. Android之Broadcast, BroadcastReceiver(广播)

    在 Android 中使用 Activity, Service, Broadcast, BroadcastReceiver 活动(Activity) - 用于表现功能 服务(Service) - 相当 ...

  7. Android 四大组件 -- BroadcastReceiver(广播)

    Android开发的四大组件分别是: 活动(activity),用于表现功能; 服务(service),后台运行服务,不提供界面呈现: 广播接受者(BroadcastReceive),勇于接收广播: ...

  8. android 发送广播 接收广播 动态广播接收

    1. 静态广播 见网址: http://www.devdiv.com/forum.php?mod=viewthread&tid=48614 2.同时多个动态广播 private Broadca ...

  9. Broadcast(广播)和BroadcastReceiver(广播接收器)

    目录(?)[-] BroadcastReceiver简介 BroadcastReceiver生命周期 注册BroadcastReceiver 静态注册 动态注册 发送Broadcast 同步广播Con ...

最新文章

  1. 浅谈Chatbot的架构模型和响应机制
  2. File,FileInfo;Directory,DirectoyInfo的区别
  3. 面试官问我:如何解决ABA问题?我给出接近满分的回答
  4. 分布式搜索 Elasticsearch —— 节点实例化
  5. sqlldr导入数据到数据库
  6. UE4异步编程专题 - TFunction
  7. 手把手教你实现 Docker 部署 Redis 集群
  8. java SSH编码规范
  9. script脚本中写不写$(document).ready(function() {});的差别
  10. Oracle连接pb,PB内置Oracle数据库接口的使用方法
  11. spreadJs拖放单元格值的解决方法
  12. 20191122 视频版控制台上的极乐净土
  13. 【短视频运营】抖音推送机制 | 账号 “ 完播率 “ 数据
  14. 可控硅的基本工作原理及应用
  15. 2023年最新微信记账小程序源码+简约大气
  16. 知识图谱导论----相关笔记
  17. 网上商城(电商)解决方案
  18. 私钥,公钥,密钥的理解,不要钻死胡同
  19. mysql 去掉前面的0_去掉前面的0的sql语句(前导零,零前缀)
  20. iOS 二维码生成 (Swift代码)

热门文章

  1. 信号传输速率的快速了解
  2. Google map获取手机屏幕当前显示地图的范围
  3. sqlserver 数据库优化工具,安全性设置,并发设置,SQL耗时优化
  4. 郭敬明最经典的45句话
  5. labelshop更改打印机_如何快速掌握标签打印软件LabelShop中的功能
  6. Java clk啥意思_clock (CLK)是什么意思
  7. 软件设计之UML—UML的构成[上]
  8. 基于MQTT协议的Mosquitto的使用及libmosquitto客户端编程
  9. C# 构造器-实例构造器,类型构造器
  10. Vertx学习一:这玩意是到底是个啥