Android四大组件之一:广播

DA14531之如何Debug(在线调试、Jlink仿真、串口打印) 在线调试和串口打印调试。在线调试是Keil软件配合Jlink编译、烧录、仿真为一体的,其操作包括:运行、停止、打断点,单步运行等。而串口打印调试,只需打开相关配置,让arch_printf()函数正常输出串口数据。若想在初始化完成后打印arch_printf(“goto Loop\r\n”);波特率为115200,接收到串口消息goto Loop。连好线后,点击仿真按钮,在线Jlink调试。 阅读详情
Android系统的四大组件之:BroadcastReceiver,这种组件本质上就是以后总全局的监听器,用于监听系统全局的广播消息。由于BroadcastReceiver是一宗全局的监听器,因此它可以非常方便的实现系统中不同组件之间的通信。例如我们希望客户端程序与startService()方法启动的Service之间的通信,就可以借助于BroadcastReceiver来实现。
 
BroadcastReceiver简介:
 
    BroadcastReceiver用于接收程序(包括用户开发的程序和系统内建的程序)所发出的Broadcast Intent,与应用程序启动Activity、Service相同的是,程序启动BroadcastReceiver也只需要两步。第一,创建需要启动的BroadcastReceiver的Intent。第二,调用Context的sendBroadcast()或sendOrderedBroadcast()方法来启动指定的BroadcastReceiver。当应用程序发出一个Broadcast Intent之后,所有匹配该Intent的BroadcastReceiver都有可能启动。与Activity、Service具有完整的生命周期不同,BroadcastReceiver本质上只是一个系统级的监听器,它专门负责监听各个程序所发出的Broadcast。
 
由于BroadcastReceiver本质上属于一个监听器,因此实现BroadcastReceiver的方法十分简单,只要重写BroadcastReceiver的onReceive(Context context ,Intent intent)方法就可以。一旦实现了BroadcastReceiver,接下来就应该指定该BroadcastReceiver能匹配的Intent,此时有两种方法:
 
1、使用代码进行指定,调用BroadcastReceiver的Context的registerReceiver()方法指定。代码如下:
 
IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
 
IncomingSMSReceiver receiver = new IncomingSMSReceiver();
 
registerReceiver(receiver, filter);
 
2、在AndroidManifest.xml文件中配置,代码如下:
 
<receiver android:name="MySMSListener">
 
   <intent-filter>
 
       <action 
 
android:name="android.provider.Telephony.SMS_RECEIVED"/>
 
   </intent-filter>
 
</receiver>
 
    
 
Receiver的生命周期
 
一个BroadcastReceiver的对象仅仅在调用onReceiver(COntext, Intent)的时间中有效。一旦你的代码从这个函数中返回,那么系统就认为这个对象应该结束了,不能再被激活。你在onReceive(Context, Intent)中的实现有着非常重要的影响:任何对于异步操作的请求都是不允许的,因为你可能需要从这个函数中返回去处理异步的操作,但是在那种情况下,BroadcastReceiver将不会再被激活,因此系统就会再异步操作之前杀死这个进程。
 
特别是,你不应该再一个BroadcastReceiver中显示一个对话框或者绑定一个服务。对于前者(显示一个对话框),你应该用NotificationManagerAPI来替代,对于后者(绑定一个服务),你可以使用Context.startService()发送一个命令给那个服务来实现绑定效果。
 
权限
 
存取的权限可以通过在发送方的Intent或者接收方的Intent中强制指定。
 
在发送一个broadcast时强制指定权限,就必须提供一个非空的peemission参数给sendBroadcast(Intent, String)或者是sendOrderedBroadcast(Intent, String, BroadcastReceiver, android.os.Handel, int, String, Bundle)。只有那些拥有这些权限(通过在ANdroidManifest.xml文件中相应的声明<uses-permission>标签)的receiver能够接收这些broadcast。
 
在接收一个broadcast时强制指定权限,就必须在注册receiver时提供一个非空的permission参数--无论是在调用registerReceiver(BroadcastReceiver, IntentFilter, String, android.os.Handler)或者是通过再AndroidManifest.xml文件中通过<receiver>静态标签来声明。只有那些拥有这些权限(通过在相应的AndroidManifest.xml文件中查询<uses-permission>标签来获知)的发送方将能够给这个receiver发送Intent。
 
对于安全和权限的详细内容请查看Security and Permission文档。
 
进程的生命周期
 
一个正在执行BroadcastReceiver(也就是,正在执行onReceive(COntext, Intent)方法)的进程被认为是一个前台的进程,将会一直运行,除非系统处于内存极度低的情况下。
 
一旦从OnReceive()方法中返回,这个BroadcastReceiver将不会再被激活,此时它的主进程就和任何其他运行于此应用程序中的组件拥有相同的优先级。这一点非常重要,如果进程仅仅只是拥有BroadReceiver(一个普遍的情况是用户从不或者是最近没有和它进行交互),因此一旦他从onReceive()方法返回时,系统就会认为进程是空的并且主动的杀死它,以便这些资源可以被其它重要的进程利用。
 
可以接收的broadcast主要分为两种类型:
普通的broadcasts(通过Context.sendBroadcast发送)是完全异步的。这个broadcast的receiver以无序的状态运行,经常是在同一时刻运行。这种做法是十分高效的,但是也意味着receiver不能够利用相互处理的结果或者是调用退出的API来退出(因为不知道哪个receiver先接收到intent)。
 
有序的broadcasts(通过Context.sendOrderedBroadcast发送)一次只发送给一个receiver。每一个receiver是有序的处理这个intent的,前面的receiver可以传递结果给下一个receiver,或者任意一个receiver都可以完全的退出,这样intent就不会传递给其他的receivers.receiver的执行顺序可以通过匹配的intent-filter中的android:priority属性来控制;如果有多个receivers处于同一个优先级,那么这几个receivers将会以任意的顺序来执行。
 
即使是在广播普通的broadcasts的情况下,系统也有可能在某些情况下转换为一次发送一个broadcast给一个receriver。特别是当receivers需要创建进程时,在同一时刻仅仅一个receiver可以运行,避免系统因为这些新建的进程而过载。
 
注意:
 
尽管Intent类是用来发送和接受这些broadcasts,这里的Intent broadcast机制和那些通过Context.startActivity()方法来启动activity的intent是完全独立的。一个BroadcastReceiver是没办法观察和捕获一个用于启动activity的intent的;同样的,当你通过intent来发出broadcast时,你也不可能(通过这个intent)找到或者启动一个activity的。这两种操作是完全不同的:通过一个intent来启动一个activity是一个前台操作,会改变用户当前交互的对象;而通过intent来发出broadcast是一个后台操作,用户经常是察觉不到的。
 
BroadcastReceiver类(通过一个manifest的<receiver>标签作为一个组件启动)是应用程序全局声明周期重要的一部分。
【云原生技术】sonar的官方web接口,获取质量阀结果的接口 以下是一个示例思路,说明如何调用 SonarQube 的质量阀查询接口并在前端展示“哪些条件没过”。假设前端使用 AJAX 或 fetch 从后端接口拿到 SonarQube 返回的 JSON(或直接前端请求 SonarQube API),前端再把解析结果展示给用户。测试覆盖率 (Coverage) 当前仅有 60%,未满足最低 80% 的要求,需要补充测试或优化以提升覆盖率。接口),就会返回相应的质量阀状态信息;里使用它来查询当前质量阀(质量门)的状态。,你用它即可获取该次分析的质量阀状态。 阅读详情

相关推荐

Difftest踩坑笔记(一)

Difftest是差分测试框架,有什么用呢?高性能CPU的设计需要做复杂的测试,传统的测试方法运行较慢,而且出了问题很难定位,Difftest就是为了解决这两个问题。

http://www.icfgblog.com/ 4196

Android 四大组件之广播

在Android中, 什么是广播?、系统广播、自定义广播、本地广播、广播的注册

bobolan 7148

ConvLSTM时空预测实战代码详解

ConvLSTM代码复现

JaysonWong的博客 1万+

Android四大组件之一——广播

广播(Broadcast)是Android四大组件之一,用于在应用内或应用之间传递消息和通知。它允许应用程序在系统中发送事件或消息,以便其他应用程序可以接收并响应这些事件。广播分为两个主要角色:发送者和接收者。发送者是发送广播的应用程序组件,而接收者是接收和处理广播的应用程序组件。发送者发送广播后,系统会将广播传递给与接收者匹配的组件。标准广播(Normal Broadcast)和有序广播发送者发送广播后,所有匹配的接收者都会同时接收到广播。接收者之间没有优先级顺序,不能中断或拦截广播。

Sean_Word的博客 1892

【Linux】常见指令的使用

Linux常用指令

qq_74897518的博客 1479

某商场G区火灾自动报警与控制系统设计

某商场G区火灾自动报警与控制系统设计 摘要:随着我国经济建设的迅速发展,人民生活水平不断提高,城市用地日益紧张,促使建筑物正朝着高层化、密集化方向发展。高层建筑的特点决定其火灾的危险性和高层建筑的火灾自动报警系统的重要性,一套完整的火灾自动报警及联动控制系统是高层建筑发生火灾时人们生命财产的有利保障,是能否快速准确地发现火情,把火灾扑灭在萌芽状态的关键所在。文章通过消防设计,论述了火灾自动报警及消...

weixin_44026784的博客 5366

Android 四大组件之broadcast的理解

Android广播的两种类型: 1.静态广播 2.动态广播 静态注册广播: Manifeast中的代码块: <receiver android:name=".broadcast.MyStaticReceiver" android:enabled="true" android:exported="true"> ...

weixin_34318956的博客 536

Windows 游戏 EXCEPTION_ACCESS_VIOLATION 修复:3类硬件问题与5步软件排查法

本文提供Windows游戏EXCEPTION_ACCESS_VIOLATION错误的终极修复指南,涵盖3类硬件问题(内存故障、显卡问题、超频不稳定)和5步软件排查法(文件验证、驱动更新、DEP调整等),帮助玩家彻底解决0xFFFFFFFFFFFFFFFF内存访问冲突问题。

weixin_31856057的博客 2443

Android 四大组件之一:BroadcastReceiver广播机制

一、BroadcastReceiver介绍  BroadcastReceiver是Android的四大组件之一,与Activity和Service具有完整声明周期不同。它本质上是一种全局监听器,用于监听系统全局的广播消息。因此它可以方便地实现系统中不同组件之间的通信。二、BroadcastReceiver的使用  BroadcastReceiver用于接收程序所发出的 Broadcast Inten

danfengw的博客 1185

Arm A-profile架构RAS系统设计:可靠性、可用性与可服务性解析

在计算机体系结构中,可靠性(Reliability)、可用性(Availability)和可服务性(Serviceability)是构建高可信系统的核心要素。RAS系统通过硬件错误检测、隔离和恢复机制,确保系统持续稳定运行。其技术原理包括ECC内存纠错、冗余执行单元和错误传播阻断等关键技术,可显著降低数据中心等关键业务场景的故障率。现代芯片设计中,Arm A-profile架构提供标准化的RAS框架,涵盖从内存子系统到计算单元的全方位错误管理。通过分层防御策略和统一错误记录格式,实现硬件错误可追溯、可修复。

weixin_30920853的博客 358

走马观碑组智能车竞赛:目标板识别算法优化与实战技巧(基于OpenCV)

本文针对智能车竞赛走马观碑组别的核心挑战,深入探讨了基于OpenCV的目标板识别算法优化与实战技巧。文章系统分析了PVC赛道环境下的光照、运动模糊等干扰因素,详细拆解了从红色矩形定位、透视校正到特征提取与分类的完整流程,并提供了工程优化、速度提升及现场调试的实用策略,旨在帮助参赛队伍构建一套在高速运动中既准又快的鲁棒识别系统。

life6的博客 732

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

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

afufufufu的博客 899

从误检率30%到99.7%:YOLOv8/v9工业零件缺陷检测实战(附产线部署全流程与参数调优秘籍)

工业场景YOLO实战:从实验室到车间的关键调优策略 本文针对工业缺陷检测的特殊性,系统总结了YOLOv8/v9在工业应用中的实战经验。通过齿轮厂缺陷检测案例,揭示了实验室模型与工业场景的三点本质差异:小目标特性(0.2-1mm缺陷)、复杂背景干扰(油污/反光)和数据量不足问题。重点提出了工业级解决方案:1)数据采集需覆盖极端工况(不同光照/污染/角度);2)标注采用LabelStudio+预标注提升效率;3)定制工业增强策略(反光模拟/缺陷复制粘贴)。文章还提供了完整的参数调优记录和TensorRT加速部署

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1735

【Android】安卓四大组件之广播接收器(Broadcast Receiver):从基础到进阶

在 Android 开发中,广播接收器(Broadcast Receiver)是一个非常重要的组件,它能帮助应用接收来自系统或其他应用的事件通知,实现跨组件、跨应用的通信。大家可以把广播接收器想象成一个“它的作用是监听系统或应用发出的“广播消息”,并在收到消息后执行相应的操作。

m0_59734531的博客 2741

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

android四大组件之一:广播

Android广播分为两个角色:广播发送者、广播接收器 练习:发送者发送消息给广播接收器,再由接收器发送消息给用户 1.发送者 package com.example.administrator.myapplication; import android.content.Intent; import android.content.IntentFilter; import a...

一个程序员-二白的博客 409

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Android 四大组件之一:BroadCastReceiver动态注册广播流程

动态注册广播流程动态注册广播流程广播发送流程 动态注册广播流程 1.在Activity中动态注册广播时,调用registerReceiver方法,会调用到ContextWrapper的registerReceiver方法: 2.这个方法内部,mBase其实就是一个ContextImpl类型的对象,所以会执行ContextImpl类的registerReceiver方法 经过registerReceiver重载最终会调用到registerReceiverInternal这个方法中,在这个方法中会先将s

北洋的博客 6900

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android 广播用途,Android 基础知识3:四大组件之 Broadcast(广播)

目录一、Broadcast 的定义Broadcast 是一种广泛运用的、在应用程序之间传输信息的机制,Android 中的广播与传统意义上的电台广播类似,一个广播可以有任意个接收者,当然也可能不被任何应用程序所接收。广播机制是一个典型的发布-订阅模式,也就是观察者模式。广播机制最大的特点是发送方不关心接收方是否接受到数据,也不关心接收方是如何处理数据的,通过这样的方式来达到接、收双方的完全解耦。(...

weixin_39690963的博客 942

软件之间沟通的大喇叭:Android四大组件之广播机制

前面我们讲过四大组件中的活动,本文讲解四大组件中的广播机制,通过本文了解广播机制的作用以及基本用法。

Mekeater的博客 1073

ANDROID笔记:四大组件之广播

发送广播 Intent intent = new Intent(); // 这个action对应的事现实生活中的广播频道 intent.setAction("com.example.broadcast.music"); //通过intent传值 intent.putExtra("msg", data); sendBroadcast(intent);     接受广播 pub

qiuqingpo的专栏 865

Android 四大组件之一 :BroadCastReceiver 广播接收器详解

转自: http://yangguangfu.iteye.com/blog/1063732 BroadCastReceiver简介BroadCastReceiver源码位于:framework/base/core/java/android.content.BroadcastReceiver.java广播接收者(BroadcastReceiver)用于接收广播Intent,广播Intent的发送

Simon_Crystin的博客 4798

Android四大组件之四:BroadcastReceiver 广播接收器

1.BroadcastReceiver 广播接收器 (Android四大组件之一)   [1]用途:接收广播。可以接收系统广播,可以接收其它应用程序的广播,可以接收其它组件的广播。   [2]生命周期:只有十秒种,不能在广播接收器中做耗时的操作。   [3]注意:如果接收系统广播,需要添加权限。            接收广播的种类在清单文件中设置                  

安静的美男子 537

Android进阶 四大组件的工作过程(三):广播的注册,发送和接收过程

相比Activity和Service的工作过程,Broadcast的工作过程还是比较好懂的,主要就是以AMS为媒介,注册时将接收器注册进AMS中存储接收器的列表中;然后发送过程中也通过AMS来实现发送,调用其存储的接收器的onReceive方法,这样就实现了Broadcast的注册,发送和接收。

Tai_Monster的博客 1733

Android四大组件:广播机制——BroadcastReceiver

Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。广播作为Android组件间的通信方式,可以使用的场景如下: 1.同一app内部的同一组件内的消息通信(单个或多个线程之间); 2.同一app内部的不同组件之间的消息通信(单个进程);

u011212549的博客 452

Android开发中广播组件是,Android开发十、四大组件之一:Broadcast

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?通过使用sendBroadcast方法发送自己的广播,但是由于基本上不会有听众,所以这种用法很少出现,大多数都是使用BroadcastReceiver接收系统发送的广播。接收广播要接收广播很简单,只需要写一个类继承自BroadcastReceiver即可,在收到广播时就会调用其onReceive方法。同其他四大组件一样,...

weixin_42554408的博客 158

Android——四大组件之一:BroadcastReceiver 广播接收器

前言 BroadcastReceiver(广播接收器),属于Android四大组件之一在Android开发中,BroadcastReceiver的应用场景非常多今天,我将详细讲解关于BroadcastReceiver的一切相关知识 目录 目录 1. 定义 广播,是一个全局的监听器,属于Android四大组件之一 Android 广播分为两个角色:广播发送者、广播

ustcyy91的博客 940

Android 基础知识3:四大组件之 Broadcast(广播)

目录 一、Broadcast 的定义 Broadcast 是一种广泛运用的、在应用程序之间传输信息的机制,Android 中的广播与传统意义上的电台广播类似,一个广播可以有任意个接收者,当然也可能不被任何应用程序所接收。广播机制是一个典型的发布-订阅模式,也就是观察者模式。 广播机制最大的特点是发送方不关心接收方是否接受到数据,也不关心接收方是如何处理数据的,通过这样的方式来达到接、收双方的完...

有余同学的博客 953
上一篇: 安卓广播大全
下一篇: Android服务
G_MuHan
博客等级 码龄9年 31粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值