美文网首页
第4期:广播与广播接收者

第4期:广播与广播接收者

作者: 大智先生 | 来源:发表于2019-02-12 19:37 被阅读1次

Android的广播有哪几种类型?各有什么特点?

1、系统广播(System Broadcast):Android系统内置的广播,用于对外广播系统基本状态的变化。比如开机广播、锁屏广播、网络状态变化广播、电量变化广播、应用安装与卸载广播等。系统广播,用户只能接收,无法发送。

2、普通广播(Normal Broadcast):也称无序广播,是用户自行发送和接收的一种广播,可通过定义Intent-Filter指定广播的actiondata。发送广播时使用sendBroadcast()

3、有序广播(Ordered Broadcast):也是用户自定义发送和接收的一种广播,区别在于广播发出后,广播接收者按照优先级(priority)从高到低依次接收,并且优先级高的接收到广播后,可以对广播进行拦截和修改。如果两个广播接收者优先级相同,则动态注册的广播优先级要高于静态注册的广播接收者。发送广播时使用sendOrderedBroadcast()

4、粘性广播(Sticky Broadcast):与普通广播不同的是,粘性广播发送后,信息就一直保存在系统的容器内,需要时可直接通过IntentFilter匹配指定的Action获取,无需广播接收者。比如电池电量的广播就是粘性广播。发送粘性广播使用sendStickyBroadcast()
注:粘性广播因安全问题,从Android 5.0(API 21)起被弃用。

5、本地广播(Local Broadcast):Android的广播属于全局广播,可以跨APP通信,只要条件符合,当前APP发出的广播可以被其它APP接收到,也可以接收到其它APP发出的广播。因此存在一定的安全性问题和效率问题。当不存在跨APP通信的需求时,推荐使用Android的本地广播。本地广播有以下几个特性:
1) 本地广播仅限APP内发送和接收,更安全高效;
2) 本地广播接收者只能动态注册,不能静态注册。

2. 广播有哪两种注册方式?二者有什么区别?

注册广播有两种方式,一种是在代码中进行动态注册;一种是在清单文件在进行静态注册。

1、动态注册:只有在应用启动后才能接收广播,应该未启动或已关闭则不能接收到广播。这种方式比较节省资源,推荐。

2、静态注册:无论应用处于何种状态,均可以接收到广播。这种方式比较耗费资源,除非有需求,否则不推荐这种方式。

也因此,Android中有些广播是不支持静态注册的,比如锁定屏幕和解锁屏幕的广播,电量变化的广播,时间变化的广播,配置变化的广播。

  1. android.intent.action.SCREEN_ON
  2. android.intent.action.SCREEN_OFF
  3. android.intent.action.BATTERY_CHANGED
  4. android.intent.action.CONFIGURATION_CHANGED
  5. android.intent.action.TIME_TICK

3. 不同方式注册的广播,onReceiver()方法里的Context参数相同吗?

不相同。

  1. 静态注册的广播,返回的是ReceiverRestrictedContext
  2. 动态注册的广播返回的是注册时的Context,比如Activity。
  3. 本地广播返回的是ApplicationContext

参考资料

Android广播类型汇总 - Carson_Ho

相关文章

  • 第4期:广播与广播接收者

    Android的广播有哪几种类型?各有什么特点? 1、系统广播(System Broadcast):Android...

  • 广播分类

    广播分为有序广播和无序广播 有序广播所有与广播中的action匹配的广播接收者都可以收到这条广播,但是是有先后顺序...

  • Android开发 广播接收者注册的方式哪几种?广播的发送类型有

    广播的注册方式: 静态注册:在清单中配置广播接收者 动态注册:在代码中注册广播接收者 广播的发送类型: 无序广播:...

  • Android广播接收者_笔记

    广播接收者的分类,两种分法: 一、分为全局广播和本地广播 二、分为有序广播和无序广播 广播接收者的注册,动态注册和...

  • Android组件 - 广播

    目录: 一、什么是广播二、广播的类型三、广播接收者的使用四、广播接收者的注意事项 一、什么是广播 Android四...

  • 广播接收者

    广播接收者 常驻(静态)广播接收者: 特点:一直存在 使用:在清单文件中注册 动态广播接收者 特点:生...

  • 【Android】四大组件(五)BroadcastReceive

    BroadcastReceiver广播接收者 BroadcastReceiver广播接收者Android四大组件之...

  • Android 发送接收广播原理

    前言 本文代码基于 Android R。 注册广播接收者 Android 可以动态和静态注册广播接收者。动态广播接...

  • 广播相关学习-registerReceiver

    广播主要分为两部分:广播发送者和广播接收者 广播接收者:分为静态注册和动态注册 静态注册:AndroidManif...

  • 2-AII--BroadcastReceiver有序广播

    零、前言 二、广播接收者代码实现 1.男孩广播接收者:BR1_Boy.java 2.石匠广播接收者:BR2_Sto...

网友评论

      本文标题:第4期:广播与广播接收者

      本文链接:https://www.haomeiwen.com/subject/azzkeqtx.html