首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Carson带你学Android:手把手教你学会广播组件-BroadcastReceiver

定义 即 广播,是一个全局的监听器,属于Android四大组件之一 Android 广播分为两个角色:广播发送者、广播接收者 2....5.2.3 两种注册方式的区别 5.3 广播发送者向AMS发送广播 5.3.1 广播的发送 广播 是 用”意图(Intent)“标识 定义广播的本质 = 定义广播所具备的“意图(Intent)” 广播发送...= 广播发送者 将此广播的“意图(Intent)”通过sendBroadcast()方法发送出去 5.3.2 广播的类型 广播的类型主要分为5类: 普通广播(Normal Broadcast) 系统广播...Intent.ACTION_SHUTDOWN 重启设备 Intent.ACTION_REBOOT 注:当使用系统广播时,只需要在注册广播接收者时定义相关的action即可,并不需要手动发送广播,当系统有相关操作时会自动进行系统广播...; 在广播发送和接收时,增设相应权限permission,用于权限验证; 发送广播时指定该广播接收器所在的包名,此广播将只会发送到此包中的App内与之相匹配的有效广播接收器中。

66510

17 个必须掌握的 BroadcastReceiver 知识点「建议收藏」

这种组件本质上是一种全局的监听器,用于监听系统全局的广播消息。 它可以接收来自系统和应用的的广播。...在广播发出之后,同一时刻只有一个广播接收器能够收到这条广播消息,当其逻辑执行完后该广播接收器才会继续传递。...在系统内部当特定时间发生时,系统广播由系统自动发出。...1.7 本地广播 本地广播机制使得发出的广播只能够在应用程序的内部进行传递,并且广播接收器也只能接受来自本应用程序发出的广播,则安全性得到了提高。...不要在 onReceiver() 方法中添加过多的逻辑或者进行任何的耗时操作,因为在广播接收器中是不允许开启线程的,当 onReceiver() 方法运行了较长时间而没有结束时,程序就会报错。

1.7K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android四大组件:BroadcastReceiver史上最全面解析

    Android系统在特定情况下与App之间的消息通信 如当电话呼入时、网络可用时 c. 多线程通信 ---- 3....实现原理 Android中的广播使用了设计模式中的观察者模式:基于消息的发布/订阅事件模型。 因此,Android将广播的发送者和接收者极大程度解耦,使得系统能够方便集成,更易扩展。...4.3 广播发送者向AMS发送广播 4.3.1 广播的发送 广播是用”意图(Intent)“标识 定义广播的本质:定义广播所具备的“意图(Intent)” 广播发送:广播发送者将此广播的”意图“通过sendBroadcast...Intent.ACTION_SHUTDOWN 重启设备 Intent.ACTION_REBOOT 注:当使用系统广播时,只需要在注册广播接收者时定义相关的action即可,并不需要手动发送广播,当系统有相关操作时会自动进行系统广播...; 在广播发送和接收时,增设相应权限permission,用于权限验证; 发送广播时指定该广播接收器所在的包名,此广播将只会发送到此包中的App内与之相匹配的有效广播接收器中。

    1.9K10

    Android 四大组件之BroadcastReceiver

    注意:广播发送者和广播接受者的执行顺序是异步的,发送者不会关心有无接收者及接收者是否接收。 5....5.3 广播发送及广播类型 广播发送:广播的“发送”与“接收”,表面上看是广播作为 Android 广播机制中的实体,实际上这一实体本身是并不是以所谓的”广播“对象存在的,而是以”意图“(Intent)...定义广播的定义本质,实际就是相应广播”意图“的定义过程,然后通过广播发送者通过 sendBroadcast() 方法将此”意图“发送出去。...当使用系统广播时,只需在注册广播接收者时定义相关的action即可,不需要手动发送广播,当系统有相关操作时会自动进行系统广播的发送。 ?...在广播发送和接收时,都增加上相应的permission,用于权限验证; c.

    1.5K10

    安卓应用安全指南 4.2.3 创建使用广播接收器 高级话题

    当应用 B 是恶意软件时,会导致敏感信息的泄漏。 当发送有序广播时,它可能会收到意外的结果信息。...然而,当广播接收器仅接收由系统发送的广播意图时,应使用带有意图过滤器定义的exported="false"。 其他组合不应使用。...因此,当不需要粘性广播时,需要显式调用removeStickyBroadcast()来删除粘滞广播。 此外,带有特定权限的受限的广播接收器无法接收广播。...与粘性广播相同,它不能仅仅允许带有特定权限的广播接收器接收广播。 从广播特性行为的角度来看,上表反过来排列在下面的表中。...然而,缺少权限导致接收/发送方的错误时,将输出错误日志。 由广播发送的意图信息包含在错误日志中,因此在发生错误之后,需要注意,发送广播时,意图的信息显示在LogCat中。

    1K10

    安卓应用安全指南 4.2.2 创建使用广播接收器 规则书

    如上所述,当从广播接收器返回结果信息时,需要注意从目标应用泄漏的结果信息。...对于广播敏感信息,只有可靠的广播接收器可以接收它,而其他广播接收器则不能。 以下是广播发送方法的一些示例。 方法是,通过使用显式意图,将广播仅仅发送给预期的可靠广播接收器,来固定地址。...当粘性广播变得不必要时,可以随时用removeStickyBroadcast()任意删除它。 由于在预设情况下,粘性广播被隐式意图使用。...当发送方(源)广播接收器是公共广播接收器时,它从未指定的大量应用接收返回数据。 所以它也可能会收到恶意软件的攻击数据。 当发送方(源)广播接收器是私有广播接收者时,似乎没有风险。...在 Android 权限安全模型中,权限仅管理来自应用的受保护素材的直接访问。 由于这些特点,所得素材可能会被提供给其他应用,而无需声明保护所需的权限。

    84430

    android之注册registerReceiver

    image.png BroadcastReceiver 广播作为四大组件之一,使用方式也是多种多样的,既可以自己在manifest中注册,也可以在java代码中动态注册,既可以接收由系统发出的广播,也可以接受自己定义并发送的广播...Sticky广播(已弃用) 从发送者区分:系统广播和自定义广播 BroadcastReceiver作为Android四大组件之一,不像Activity,没有可显示的界面。...BroadcastReceiver包括两个概念,广播发送者和广播接收者(Receiver),这里的广播实际就是指Intent,程序可以自己发送广播自己接收,也可以接受系统或其他应用的广播或是发送广播给其他应用程序...注册完成后,当发送者发送某个广播时系统会将发送的广播(Intent)与系统中所有注册的符合条件的接收者(Receiver) 的IntentFilter进行匹配,若匹配成功则执行相应接收者的onReceive...例,startActivity(intent) 中的 intent 的分类不能是 android.intent.category.DEFAULT 和 android.intent.category.BROWSABLE

    2.1K20

    android登录注册_android studio注册页面

    image.png BroadcastReceiver 广播作为四大组件之一,使用方式也是多种多样的,既可以自己在manifest中注册,也可以在java代码中动态注册,既可以接收由系统发出的广播,也可以接受自己定义并发送的广播...Sticky广播(已弃用) 从发送者区分:系统广播和自定义广播 BroadcastReceiver作为Android四大组件之一,不像Activity,没有可显示的界面。...BroadcastReceiver包括两个概念,广播发送者和广播接收者(Receiver),这里的广播实际就是指Intent,程序可以自己发送广播自己接收,也可以接受系统或其他应用的广播或是发送广播给其他应用程序...注册完成后,当发送者发送某个广播时系统会将发送的广播(Intent)与系统中所有注册的符合条件的接收者(Receiver) 的IntentFilter进行匹配,若匹配成功则执行相应接收者的onReceive...例,startActivity(intent) 中的 intent 的分类不能是 android.intent.category.DEFAULT 和 android.intent.category.BROWSABLE

    2.8K30

    EventBus初体验

    整个流程跟广播类似, Publisher发送事件,就类似我们发送一个广播, 在接收广播的地方进行注册, 我们就可以接收广播发出来的事件, 然后就可以处理。Subscriber就类似广播处理器。...priority 优先级, 值越小优先级越低,当有多个方法处理同一个消息时,处理的顺序,默认为0。 sticky 是否接收黏性消息, 和黏性广播相同, 默认为false。...sticky黏性消息:当消息发送出去之后,如果没有消息接收者处理这个消息,此消息会暂时存储在EventBus实例中, 当后面注册消息接受者时,如果是相应的处理者, 将会把消息给处理者去处理;我个人喜欢用这个来做数据的预加载...由于Android机器本身性能有限,一般不建议使用运行时注解,虽然EventBus的注解声明为Runtime, 但它同时支持编译时注解和运行时注解, 当没配置编译时注解处理器时, 会自动通过反射查找运行时的注解...LocalBroadcastManager 这个除了广播的低延迟外, Boardcast的缺点都有, 并且它还不能跨进程, 没有黏性广播。

    71210

    《Android移动应用基础教程》(Android Studio)(第二版)黑马程序员 课后习题答案

    广播发送者和接收者分别处于观察者模式中的消息发布和订阅两端。...(2) 广播发送者通过Binder机制向AMS发送广播。 (3) AMS查找符合相应条件(IntentFilter/Permission)的广播接收者,将广播发送到相应的消息循环队列中。...有序广播按照广播接收者声明的优先级别被依次接收。当在高级别的广播接收者逻辑执行完毕之后,广播才会继续传递。当优先级相同时,先注册的广播接受者优先执行。 b)无序广播是完全异步执行的。...当发送无序广播时,所有监听这个广播的广播接收者都会接收到此广播消息,但接收和执行的顺序不确定。 (3)拦截广播 有序广播的接收者可拦截广播。...如果优先级较高的广播接收者将广播终止,那么广播将不再向后传递。而无序广播则不能被拦截。 (4)效率 有序广播的效率比无序广播低。

    2.9K20

    Android安全之应用层安全(五)

    最知名的服务示例是在后台播放音乐的媒体播放器,即使用户离开已启动此服务的活动。 广播接收器。 广播接收器是应用的组件,它接收广播消息并根据所获得的消息启动工作流。 内容供应器。...由于没有入口点,所有组件(广播接收器除外,它也可以动态定义)需要由应用的开发人员在AndroidManifest.xml文件中声明。 分离成组件使得我们可以在其它应用中使用组件。...在这种情况下,被调用的服务调用其方法onStart。 当开发人员要在组件和服务之间建立连接时,它调用bindService方法,并在被调用的服务中调用onBind方法。...当应用或系统组件使用sendBroadcast,sendOrderedBroadcast和sendStickyBroadcast方法发送特殊消息时,将启动广播接收器。...根据这个信息,使用意图过滤器,操作系统选择可以处理意图的适当组件。意图过滤器定义了组件可以处理的意图的“模板"。当然,相同的应用可以定义一个意图过滤器,它将处理来自其他组件的意图。

    1K20

    浅入浅出 Android 安全:第五章 Android 应用层安全

    最知名的服务示例是在后台播放音乐的媒体播放器,即使用户离开已启动此服务的活动。 广播接收器。 广播接收器是应用的组件,它接收广播消息并根据所获得的消息启动工作流。 内容供应器。...由于没有入口点,所有组件(广播接收器除外,它也可以动态定义)需要由应用的开发人员在AndroidManifest.xml文件中声明。 分离成组件使得我们可以在其它应用中使用组件。...在这种情况下,被调用的服务调用其方法onStart。 当开发人员要在组件和服务之间建立连接时,它调用bindService方法,并在被调用的服务中调用onBind方法。...当应用或系统组件使用sendBroadcast,sendOrderedBroadcast和sendStickyBroadcast方法发送特殊消息时,将启动广播接收器。...根据这个信息,使用意图过滤器,操作系统选择可以处理意图的适当组件。意图过滤器定义了组件可以处理的意图的“模板”。当然,相同的应用可以定义一个意图过滤器,它将处理来自其他组件的意图。

    54330

    android Broadcast Receiver漏洞挖掘

    Broadcast Receiver安全场景和危害 BroadcastReceiver是Android的四大组件之一,这个组件涉及两个概念:广播发送者和广播接受者。...当发送一个广播时,系统会将发送的广播(intent)与系统中所有注册的符合条件的接收者的IntentFilter进行匹配,若匹配成功,则执行相应接收者的onReceive函数。...发送广播时如果处理不当,恶意应用便可以嗅探、拦截广播,致使敏感数据泄露等;如果接收广播时处理不当,便可导致拒绝服务攻击、伪造消息、越权操作等。...内部app之间的广播使用protectionLevel=’signature’ 验证其是否真是内部app。 返回结果时需注意接收app是否会泄露信息。...发送的广播包含敏感信息时需指定广播接收器,使用显示意图或者setPackage(String packageName)。 使用LocalBroadcastManager。

    1.2K20

    HCIE数通知识精讲-IP组播基础(part-1)

    图1 采用单播和广播方式进行点对多点传输数据示意图 ? · 采用单播方式时,网络中传输的信息量与需要该信息的用户量成正比。...当需要该信息的用户数量较大时,信息源需要将多份内容相同的信息发送给不同的用户,这对信息源以及网络带宽都将造成巨大的压力。由此可以看出,该传输方式不利于信息的批量发送,只适用于用户稀少的网络。...· 采用广播方式时,不需要接收信息的主机也将收到该信息,这样不仅信息的安全性得不到保障,而且会造成同一网段中信息泛滥。由此可见,该传输方式不利于与特定对象进行数据交互,并且还浪费了大量的带宽。...由上述可见,传统的单播和广播通信方式不能有效地解决单点发送、多点接收的问题。...组播相对单播和广播有如下优势: · 相比单播,由于被传递的信息在距信息源尽可能远的网络节点才开始被复制和分发,所以用户的增加不会导致信息源负载的加重以及网络资源消耗的显著增加。

    71630

    Android高频面试专题 - 基础篇(四)BroadcastReceiver

    AMS 根据 广播发送者 要求,在已注册列表中,寻找合适的广播接收者 寻找依据:IntentFilter / Permission 4....mActions 的主要作用是方便在广播发送后快速得到可以接收它的BroadcastReceiver。 在注册广播时,其实是在更新这两个Map....在Android 4.0及以上系统中发送广播时,可以使用setPackage()方法设置接受广播的包名。 使用本地广播。...(2)接受广播 注册广播接收器时,增加相应的permission,用于权限验证。 注册广播接收器时,设置android:exported的值为false。 使用本地广播。...不能,广播接收默认是在主线程中运行,在前面Android高频面试专题 - 进阶篇(一)ANR中讲过,广播超时是10s(前台)和60s(后台),如果耗时超过这个时间,就会抛出ANR,所以如果需要在广播内执行耗时操作

    1.7K41

    安卓开发_深入理解广播机制

    一、Broadcast(广播) 在Android中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理。...原因如下: (1)广播接收器的生命周期是非常短暂的,当广播接收器接收到广播时开始创建,而执行完onReceive(context,intent)方法后就销毁 (2)默认情况下,广播接收器也是运行在UI线程中的...在发送广播时,不管是什么广播类型(系统广播),系统默认增加了值为FLAG_EXCLUDE_STOPPED_PACKAGES(不包含已经停止的包)的FLAG, 导致即使是静态注册的广播接收器,对于其所在进程已经退出的应用程序...4、发送广播 广播 其实是以 意图(Intent)的形式表示的 发送广播 就是 通过广播发送者将”意图“(意图包含action 附带数据)发送出去。...(3)BroadcastReceiver.abortBroadcast() 中断广播,使级别低的广播接收器不能接收此广播 比如三个不同的广播接收器都可以接收同一个广播,设三个广播的优先级为-100,0,100

    1.5K70

    Android点将台:传令官(使用级)

    ) sendBroadcast(intent) } 4.静态广播中的数据获取 广播接收者的onReceive回调中有intent: Intent,你应该明白怎么传数据了吧 ---...也没有太大的亮点,作用平平 为了说明他的亮点,现在我们新建一个app:Anotherapp 可以发现在另一个app里也能正常使用这个广播 这就有点意思了,我在A项目中写了一个类,它的方法可以在...动态使用分为注册和注销,不需要在AndroidManifest.xml注册 只有在注册后和注销前的时间段才能使用,否则广播无效(即onReceive方法不会掉) 1.注册广播与发送消息 /**...|---劣势:只有在注册之后才能起作用,在Activity的onDestroy后如果未被注销,会报异常 ----所以动态注册的广播存活时间最长也就约等于Activity的生命周期长度 静态注册的广播...注册广播接收者 registerReceiver(mScreenReceiver, filter) } 2.短信监听广播 注意权限:android:name=

    12210

    Android 四大组件学习之BroadcastReceiver三

    广播分为无序广播和有序广播 无序广播: 广播发送者的action与广播接收者的action都匹配的话,所以广播介绍者都可以收到这条广播,并且没有先后顺序,可以认为是同时收到 有序广播: 广播发送者的action...与广播接收者的action都匹配的话,所以广播介绍者都可以收到这条广播,但是有先后顺序,高优先级的先收到 既然知道什么是无序广播和有序广播后, 那我们举例说明: 那我们模拟生活中一个例子说明。...我们假设: 某某某高校校长是这次广播的发送者,计算机学院的院长,导员和各个班的班长是广播接收者 先用无序广播举例: 第一: 创建校长应用程序,也就是广播的发送者: public class PresidentActivity...有一天学校的检查部门(也就是一帮臭b学生会,来检查上早操的人数) 这时候我们就需要对发送者在改造: public void sendBroadcast(View v) { Intent...这就是有序广播,发送者发送后,第一个接受者可以对广播的内容修改,同时也可以终止广播的继续发送。但是广播的最终接受者是一定可以收到此广播的。

    27720

    使用广播-BroadcastReceiver最详细解析

    男孩:Broadcast是广播的意思,在Android中应用程序之间的传输信息的机制,BroadcastReceiver是接收广播通知的组件,广播和广播接收器是Android中需要了解的,那么怎么样去了解呢...广播传递信息告诉我们要做什么,通知信息或传递数据等。广播接收器是用来接收来自系统和应用的广播。 在Android中提供了两种主要的类型广播:标准广播和有序广播。 什么是广播呢?...~ 普通广播: Normal broadcasts,是一种完全异步执行的广播,当广播发出后,几乎所有广播接收器都会在同一时间收到这条广播。...在Android中提供了优先级的属性(priority)来控制先后,有序广播中可以截断广播,不被下一个广播接收器接收,这是有序广播的特点。...在介绍本地广播之前,前面讲的广播室一种全局的,属于系统全局广播,广播室一个全局的监听器,在Android中,我们要知道广播有两种说法:广播发送者和广播接收者。

    60220
    领券