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中注册;

  • 相关阅读:
    QT项目升级(QT4.6.3到QT5.2)时,遇到的问题和解决方法
    hdu 5312 Sequence(数学推导——三角形数)
    Windows 操作系统与 .NET Framework
    Cocos2d-x手机游戏开发与项目实践具体解释_随书代码
    Uva 10081 Tight words (概率DP)
    从零使用qemu模拟器搭建arm执行环境
    hdu 2255 奔小康赚大钱(KM算法)
    最大子序列和问题
    深入理解javascript之高级定时器
    openstack 镜像自动扩容 resize拉伸
  • 原文地址:https://www.cnblogs.com/tengtao93/p/5259698.html
Copyright © 2011-2022 走看看