Android 中的广播机制

Android 中的广播,按照广播响应范围,可以分为应用内广播全局广播。按照广播的接收方式,可以分为标准广播有序广播

广播的分类

  • 响应范围

    • 应用内广播:此类广播只能在应用内传播,其他应用无法获取
    • 全局广播:系统中的所有广播接收器只要注册了对应的类型,都可以接收
  • 接收方式
    • 标准广播:一次发出,所有应用都会以无序的方式接收到广播消息
    • 有序广播:所有的接收器将会按照一定的序列接收广播,且已经接收的可以终止广播的继续传递

以动态方式注册广播接收器

  • 新建一个类,继承 BroadcastReceiver,重写其中的 OnReceive 方法,实现自己需要的功能
  • 准备一个 IntentFilter,用于过滤要接收的消息
  • 准备 Broadcast Receiver(实例化 BroadcastReceiver)
  • 使用 registerReceiver 将 Broadcast Receiver 和 IntentFilter 绑定
  • 在 OnDestroy 中使用 unregisterReceiver 取消广播接收器

以静态方式注册广播接收器

  • 新建一个类,继承 BroadcastReceiver
  • 在 AndroidManifest.xml 中注册此接收器(Android Studio 将会自动完成注册的步骤)
  • 在 AndroidManifest.xml 中添加要监听的广播权限(如果需要,比如访问 wifi 的状态,开机启动等)
  • 在 AndroidManifest.xml 中receiver 段中添加对应的 Intent Filter

注意:广播接收器中不应该执行那些时间很长的动作,也不应该执行那些可能引起阻塞的行为。接收器中不可以开启线程

发送标准广播

  • 准备一个 Intent,初始化内容为广播的名称(Intent 中还可以根据需要携带其他内容)
  • 使用 sendBroadCast(Intent) 发送此广播

发送有序广播

  • 准备一个 Intent,初始化内容为广播的名称(Intent 中还可以根据需要携带其他内容)
  • 使用 sendOrderBroadCast(Intent) 发送此广播

有序广播在接受侧应该设置优先级,另外可以使用 abortBroadcast 禁止广播的继续传播

本地广播

发出的广播只能在应用内传递。

本地广播的发出

  • 准备一个本地广播:LocalBroadcastManager
  • 准备 Intent
  • 使用 sendBroadcast 发出广播

本地广播的接收

  • 准备 intentfilter
  • 准备 LocalReceiver(继承自 BroadcastREceiver)
  • 使用 registerReceiver 注册接收器

Android 中的广播机制的更多相关文章

  1. Android中使用广播机制退出多个Activity

    谷歌百度一下,Android中退出多个Activity的方法,大家讨论的很多. 在实习的时候,看到公司的项目退出多个Activity,是采用LinkedList方法,毕业设计的时候,也参照了那种方法. ...

  2. Android中的广播Broadcast详解

    今天来看一下Android中的广播机制,我们知道广播Broadcast是Android中的四大组件之一,可见他的重要性了,当然它的用途也很大的,比如一些系统的广播:电量低.开机.锁屏等一些操作都会发送 ...

  3. Android中Alarm的机制

    本次给大家分析的是Android中Alarm的机制所用源码为最新的Android4.4.4.首先简单介绍如何使用Alarm并给出其工作原理,接着分析Alarm和Timer以及Handler在完成定时任 ...

  4. 浅析Android中的消息机制(转)

    原博客地址:http://blog.csdn.net/liuhe688/article/details/6407225 在分析Android消息机制之前,我们先来看一段代码: public class ...

  5. 浅析Android中的消息机制(转)

    在分析Android消息机制之前,我们先来看一段代码: public class MainActivity extends Activity implements View.OnClickListen ...

  6. Android中的Parcel机制 实现Bundle传递对象

    Android中的Parcel机制    实现了Bundle传递对象    使用Bundle传递对象,首先要将其序列化,但是,在Android中要使用这种传递对象的方式需要用到Android Parc ...

  7. 浅析Android中的消息机制-解决:Only the original thread that created a view hierarchy can touch its views.

    在分析Android消息机制之前,我们先来看一段代码: public class MainActivity extends Activity implements View.OnClickListen ...

  8. 浅析Android中的消息机制

    在分析Android消息机制之前,我们先来看一段代码: public class MainActivity extends Activity implements View.OnClickListen ...

  9. 探索Android中的Parcel机制(上)

    一.先从Serialize说起 我们都知道JAVA中的Serialize机制,译成串行化.序列化……,其作用是能将数据对象存入字节流其中,在须要时又一次生成对象.主要应用是利用外部存储设备保存对象状态 ...

随机推荐

  1. Angular4 自制分页控件

    过年后第一波,自制的分页控件,可能功能没有 PrimeNG 那么好,但是基本可以实现自定义翻页功能,包括:首页/最后一页/上一页/下一页. 用户可以自定义: 1. 当前默认页码(如未提供,默认为第一页 ...

  2. JavaScript的迭代函数与迭代函数的实现

    前言 ​ 如果对技术很自信,请直接看 实现的源码 ​ 如果想回顾一下基础,请按文章顺序阅读 说到迭代方法,最先想到的是什么?forEach还是map,迭代的方法ES5提供了5种方法 以下定义来自 Ja ...

  3. urllib库使用方法 3 get html

    import urllib.requestimport urllib.parse #https://www.baidu.com/s?ie=UTF-8&wd=中国#将上面的中国部分内容,可以动态 ...

  4. 两张图证明 WolframAlpha 的强大

    引用于:https://capbone.com/wolfram-alpha/ 两张图证明 WolframAlpha 的强大 之前在" 我手机中有哪些应用 "里提到过 Wolfram ...

  5. windows提权之前的信息收集

    0x00 基本信息 -获取主机名:hostname或者echo %COMPUTERNAME% -获取所属域信息:systeminfo 获取环境变量:set 0x01 获取系统安装的软件信息 -导出注册 ...

  6. 怎样在windows上定时执行python脚本

    作为一个需要在电脑上工作和学习的人,一件十分困扰我的事情就是怎样不受互联网中其他内容的干扰而专注于自己想要做的事情,有的时候真的是沉浸于微博上的消息,忘了自己本来想要做的事.不过我有一件神器,自己爱豆 ...

  7. C# 对DataTable的简单操作

    //更改列名 dt.Columns["原来的列名"].ColumnName="新的列名"; //移除列 dt.Columns.Remove("列名&q ...

  8. hadoop伪分布式组件安装

    一.版本建议 Centos V7.5 Java V1.8 Hadoop V2.7.6 Hive V2.3.3 Mysql V5.7 Spark V2.3 Scala V2.12.6 Flume V1. ...

  9. Ambari搭建hadoop错误记录

    1.ResourceManager启动失败 错误如下 2019-03-24 19:57:00,607 - Error while executing command 'start': Tracebac ...

  10. java入门---变量类型&类变量&局部变量&实例变量&静态变量

        在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下:     type identifier [ = value][, identifier [= value] ...] ; ...