简友广场

第一行代码

2020-02-04  本文已影响0人  相忘于江湖eyu

—— 广播机制


纲要

简介-全局大喇叭

Android四大组件之一,为了便于进行系统级别的消息通信而引入广播机制

比IP网络的广播消息机制更灵活

广播两面

广播分类1

广播分类2

接收系统广播

接收各种系统状态信息

注册方式

动态注册监听网络变化

创建广播接收器

创建一个继承自BroadcastReceiver的类,并重写父类的onReceive()方法即可。

简单四步走:

  1. 声明权限
  2. 注册(增加相应过滤)
  3. 重写onReceive()实现收到消息时的处理
  4. 销毁时记得注销




在收消息处理中如果要获取网络具体状态,调用相应系统服务和方法即可

静态注册实现开机启动

为何需要静态注册?
动态注册虽然灵活,但是必须启动后才能收到广播

快捷方式创建广播接收器,重写生成代码中的onReceive()方法即可:

注意广播接收器中不允许开线程,所以onReceive()方法中逻辑不要过于复杂耗时,方法运行过长时间没结束程序会报错,因此广播接收器一般扮演打开程序其他组件(如:状态栏通知消息、启动服务等)

发送自定义广播

发送标准广播

发送有序广播

使用本地广播

为什么需要本地广播
前面发送和接收的均为系统全局广播,任何应用都可以接收、也可以接收任何应用的广播,存在安全问题,故引入本地广播,保证消息只在应用程序内部收发广播。

原理:使用LocalBroadcastManager对广播进行管理,并提供发送广播和注册广播的方法:

注意:本地广播无法通过静态注册方式接收

优势

最佳实践

强制下线功能

思路:任何一个界面(接收广播)--> 弹出对话框提示异地上线(点确定按钮)--> 关闭所有界面弹出登录界面

难点:静态注册不可行(无法弹出),动态注册每个Activity注册不现实

解决方案/技术点

上一篇下一篇

猜你喜欢

热点阅读