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

  • 相关阅读:
    什么是test-time argument(测试数据增强)
    在k3d上快速安装Istio,助你在本地灵活使用K8S!
    IoT设备实践丨如果你也在树莓派上部署了k3s,你也许需要这篇文章
    k3s原理分析丨如何搞定k3s node注册失败问题
    仅需60秒,使用k3s创建一个多节点K8S集群!
    手把手实操教程!使用k3s运行轻量级VM
    k3s首季在线培训来袭!本周四晚,线上见!
    k3s新版本发布!支持Helm3!还有其他重要更新Highlight!
    如何优雅地使用containerd?这里有一份必读的技巧攻略
    图解拥塞控制,这应该是把拥塞控制讲的最通俗易懂的文章了
  • 原文地址:https://www.cnblogs.com/tengtao93/p/5259698.html
Copyright © 2020-2023  润新知