zoukankan      html  css  js  c++  java
  • Android 中的广播机制

    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 注册接收器
  • 相关阅读:
    如何用Percona XtraBackup进行MySQL从库的单表备份和恢复【转】
    8款实用Sublime text 3插件推荐
    windows下配置nginx+php环境
    Windows10+Ubuntu双系统安装[
    window yii2 安装插件 报yiisoft/yii2 2.0.x-dev requires ext-mbstring错
    Composer常见问题
    Yii2中如何使用CodeCeption
    php 单进程SAPI生命周期
    php的SAPI,CLI SAPI,CGI SAPI
    HTTPS服务器配置
  • 原文地址:https://www.cnblogs.com/dongfengweixiao/p/6543375.html
Copyright © 2011-2022 走看看