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

    1.Android中广播分为两种类型:
      1)标准广播:完全异步执行的广播,在广播发出后,所有的广播接收器几乎会在同一时刻接收到,它们之间没有顺序可言,效率高,不可截断;
      2)有序广播:同步执行的广播,广播发出后,同一时刻只会有一个广播接收器能够接收到的广播,当这个广播接收器中的逻辑执行完毕之后,广播才能继续传播,有序,可截断;
    2.注册广播的两种方法:
      1)动态注册:在代码中注册,需要程序先启动后才开始工作;
      2)静态注册:在配置文件 AndroidManifest.xml 中注册,程序不启动的时候也可以接收广播;
    3.动态注册自定义广播步骤:
      1)创建 MyBroadcastReceiver 类,继承 BroadcaseReceiver 类, 并重写 onReceive() 方法;
      2)创建 IntentFilter 类实例 intentFilter, 该类主要存放广播接收器需要接收的广播类型,调用 addAction() 方法添加;
      3)注册自自定义广播:registerReceiver(myBroadcastReceiver, intentFilter);
      4)活动销毁时需要取消注册:在 onDestroy() 方法中调用 unregisterReceiver(myBroadcastReceiver);
    4.静态注册广播接收器:
      1)创建 MyBroadcastReceiver 类,继承 BroadcaseReceiver 类, 并重写 onReceive() 方法;
      2)在 AndroidManifest.xml 中添加 <receiver> 标签,并指定 name 属性为自定义广播接收器类的全类名;
    5.在重写的广播接收器 onReceive() 方法内,以避免出现耗时的操作,否则可能引起程序崩溃;
    6.发送自定义广播:
      1)创建和注册自定义广播接收器,用于接收自定义广播;
      2)创建 Intent 实例 intent,指定自定义广播类型;
      3)在活动中调用 sendBroadcast(intent) 方法发送自定义广播;
      注:这里 sendBroadcast() 方法发送的是标准广播;
    7.发送有序广播:
      1)具体步骤与上述类似,只是在发送广播的时候调用 sendOrderedBroadcast() 方法;
      2)可以给 广播接收器设置不同的优先级 priority ,优先级高的接收器将先接收到广播;
      3)先接收到广播的接收器可以调用 abortBroadcast() 方法来截断广播,这样后续的广播接收器将不再收到广播;
    8.本地广播的使用:本地广播只能够在应用程序内部使用,它发出的广播将不会被其他应用程序接收,这样能够解决应用数据的安全性问题;
      1)本地广播的使用与全局广播类似,只是在(取消)注册的注册时候是通过 LocalBroadcastManager 的 [un]registReceiver()方法来注册(取消);
      2)本地广播只能在程序内部注册,而不能在 AndroidManifest.xml中注册;

  • 相关阅读:
    Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name. 的解决方法
    无法打开物理文件xxx.mdf 操作系统错误 5:“5(拒绝访问。)” (Microsoft SQL Server,错误: 5120) 的解决方法
    IIS7.5 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler” 错误的解决方法
    datetime
    9.29中文词频统计
    9.26文件方式实现完整的英文词频统计实例
    9.22
    英文词频统计预备,组合数据类型练习
    9.19凯撒密码、GDP格式化输出、99乘法表
    9.15字符串基本操作
  • 原文地址:https://www.cnblogs.com/tengtao93/p/5259698.html
Copyright © 2011-2022 走看看