Android开发之局部广播的使用——LocalBroadcast

2023-05-16

一直以来都想着写一篇关于四大组件的文章,可是一直懒一直都没去写,今天终于抱起了电脑来敲一篇。这篇文章是关于安卓四大组件之一的广播的使用,网上关于这方面的文章也是相当多,我这里根据我一年多的工作中总结下来使用比较多的东西来说说,核心内容是Android的局部广播,也称本地广播。

一、推荐原因

我们都知道平常使用的Broadcast都属于系统全局广播,也就是发出的广播可以被其它应用程序接收到,并且我们也可以接受来自于其他任何应用程序的广播。这样一来会造成一些问题,一是消耗性能,二是容易引起安全性的问题,比如我们发送的一些携带关键性数据的广播可能被其他应用程序截获,或者其他的应用程序不停地向我们广播接收器中发送各种垃圾广播,所以为了能够简单的解决这方面的问题,Android引入了一套广播本地广播机制,使用该机制发出的广播只能够在本应用内部进行传递,并且广播接收器也只能接收来自本应用发出的广播。

二、使用场景

更新UI,举个简单的例子,我们的App一般都会有用户登录的功能,很多时候有这样的需求,我们在用户登录完成后,有些界面需要根据登录信息作出及时的响应,相应的做出UI上的改变,针对这种情况,我平时用的比较多的就是使用局部广播来实现,在需要作出改变的地方添加广播接受器进行数据接收即可。

三、代码实战

这里使用LocalBroadcastManager这个单例类来进行实现,具体操作代码如下:

首先我们要自定义广播,定义一个action:

 

/**
 * 自定义广播
 */
public static final String LOGIN_ACTION = "com.archie.action.LOGIN_ACTION";

 

然后定义一个发送广播的方法:

 

/**
     * 发送我们的局部广播
     */
    private void sendBroadcast(){
        LocalBroadcastManager.getInstance(this).sendBroadcast(
                new Intent(LOGIN_ACTION)
        );
    }

然后,我们在需要发送广播的地方调用我们的sendBroadcast()方法,这里大家根据自己的具体情况调用该发送即可。

 

好了,发送广播说完了,现在来说说接收广播,这里我们创建一个类让它继承自BroadcastReceiver广播接受器这个类,重写onReceive()方法:

/**
     * 自定义广播接受器,用来处理登录广播
     */
    private class LoginBroadcastReceiver extends BroadcastReceiver{

        @Override
        public void onReceive(Context context, Intent intent) {
            //处理我们具体的逻辑,更新UI
        }
    }

有了我们的广播接收器之后呢,我们要去动态的注册我们的广播接收器,这里分别创建了注册和取消注册的两个方法,一般是在onCreate()方法中注册,然后在onDestroy()方法中取消注册,为了防止内存泄漏,具体代码如下:

 

 

//广播接收器
    private LoginBroadcastReceiver mReceiver = new LoginBroadcastReceiver();

    //注册广播方法
    private void registerLoginBroadcast(){
        IntentFilter intentFilter = new IntentFilter(LoginActivity.LOGIN_ACTION);
        LocalBroadcastManager.getInstance(mContext).registerReceiver(mReceiver,intentFilter);
    }

    //取消注册
    private void unRegisterLoginBroadcast(){
        LocalBroadcastManager.getInstance(mContext).unregisterReceiver(mReceiver);
    }

好了,到这里就完成了我们本地广播的使用。写的仓促,有不对的地方欢迎批评指正,谢谢各位亲!

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android开发之局部广播的使用——LocalBroadcast 的相关文章

  • CentOS7关闭默认firewall启用iptables防火墙

    CentOS7关闭默认firewall启用iptables防火墙 CentOS7关闭firewall启用iptables防火墙 CentOS 7系统默认的防火墙是firewall xff0c 但是我们很多人还是习惯使用iptables xf
  • Supervisor的安装与使用

    简介 Supervisor 是用 Python 开发的一套通用的 进程管理程序 xff0c 能将一个普通的命令行进程变为后台daemon xff0c 并监控进程状态 xff0c 异常退出时能自动重启 它是通过fork exec的方式把这些被
  • devenv使用方法

    CD C CD C Program Files Microsoft Visual Studio NET 2003 Common7 IDE DEL D KTAPP KTUI1601 licx devenv build debug 34 D K
  • usb连接ubuntu,fdisk -l 查不出usb信息

    问题 xff1a 想要通过usb连接在虚拟机上的Ubuntu xff0c 但连接上后linux系统有图标但是却是灰色的 xff0c 在虚拟机 可移动设备 xff0c 那里的USB 断开与主机连接也是灰色 通过fdisk l 查不到usb信息
  • 树莓派——开启xrdp,换镜像,双击打开sh等等__一蓑烟雨任平生

    文章目录 前言一 树莓派是什么 xff1f 二 烧卡开机1 镜像用树莓派官网的镜像2 开机基本设置3 设置SSH和VNC4 查看本地IP5 设定固定IP 二 深度设置1 更换镜像源2 安装远程桌面3 修改sh脚本 Linux基本命令使用总结
  • 关于QImage无法设置透明色的问题

    明明在setPixelColor时 xff0c 设置的QColor为 xff08 254 254 254 0 xff09 xff0c 但是最后的结果却是白色 这是由于在设置QImage格式时 xff0c 该格式不支持透明色 xff0c 可以
  • 程序员必备的 40 个 VSCode 扩展

    在编写代码时 xff0c 一个富有成效的工作空间不仅仅是要找到合适的代码编辑器 开箱即用的VS Code是为开发人员制作的 根据2021年StackOverflow的调查 xff0c 71 06 的受访者将Visual Studio Cod
  • django debug toolbar 不显示

    python3 6 43 django2 0 xff0c 安装了django debug toolbar xff0c 根据官方文档配置之后却没看到调试栏 xff0c 增加了SHOW TOOLBAR CALLBACK字段后才显示 settin
  • 驳 GarbageMan 的《一个超复杂的简介递归》——对延迟计算的实验和思考

    这是一篇因骂战而起的博文 xff0c GarbageMan 在该文章回复中不仅对我进行了侮辱 xff0c 还涉及了我的母校 xff0c 特写此文用理性的分析和实验予以回击 在此也劝告 GarbageMan xff0c 没什么本事就别在那叫嚣
  • Debian_DNS服务搭建

    DNS是什么 xff1f DNS xff0c Domain Name System或者Domain Name Service xff08 域名系统或者余名服务 xff09 域名系统为Internet上的主机分配域名地址和IP地址 用户使用域
  • 解决MySQL无法插入中文数据问题(UTF-8编码)

    我花了好几个小时找过各种方法 xff0c 最终靠这个方法实现了中文插入 xff0c 我都快要喜极而泣了 xff0c 分享给大家 xff0c 真的很实用 一些关于查看和修改字符集的MySQL知识 xff1a 查看mysql的字符集 xff1a
  • PHP判断IP是否属于某个网段

    IP通过ip2long转换后可以进行比较 span class php span class hljs preprocessor lt php span span class hljs comment 判断IP是否在某个网络内 span c
  • phpstore 2016.1版激活方法

    激活请填写下面的地址吧 xff1a span class hljs label http span idea span class hljs preprocessor qinxi span 1992 span class hljs prep
  • Group by无法排序,但可以通过子查询实现

    lt pre name 61 34 code 34 class 61 34 sql 34 gt select from table where id in select max id from table where tid in 0 10
  • ext4文件系统恢复被删除的文件

    ext4magic工具 可以恢复出被rm f删除的文件 xff08 只要原始数据块未被新数据所覆盖 xff09 ext4magic device M d savedir 可参考 https sourceforge net projects
  • nginx反向代理经验整理

    location flag proxy pass http 127 0 0 1 19999 上面这段配置的反向代理实际访问路径是 usr www location flag proxy pass http 127 0 0 1 19999 上
  • Git一些使用注意事项

    Git创建远程空仓库时要注意加上 shared 61 group 即命令 xff1a 初始化远程空仓库 xff1a git init bare shared 61 group 给空仓库设置组共享 xff1a git config core
  • 使用WSL在Windows上安装Ubuntu

    1 清理环境 查看当前的wsl 状态 xff0c wsl list 可以列出当前系统中已安装的子系统 选择需要清理的系统 xff0c 然后用 wsl unregister lt DistributionName gt 即可完成卸载 将 ws
  • CentOS/Ubuntu/Debian常用版本更换国内源的方法

    Linux系统安装完后软件源一般都是国外服务器 xff0c 在国内特别慢 xff0c 这时候就需要更换国内的镜像源 如163 aliyun 还有各高校镜像源等 记住先备份原始源在更换源 xff0c 以防以后备用 一 centos 1 备份
  • C++ 的引用类型

    C 43 43 的引用类型 在翻旧文的时候 xff0c 发现这么一篇文章 xff1a 关于一道C 43 43 笔试题的纠结 xff0c 学计算机的伤不起啊 当时可能是觉得 Placement new 的语法1比较新鲜 xff0c 所以印象比

随机推荐

  • Debian 10(buster) 更换国内软件源

    今天安装了个debian10 xff0c 发现网上包括各大镜像网站提供的源地址都有点问题 xff0c 经测试 xff0c Debian 10 xff08 buster xff09 可用的国内软件源如下 xff08 阿里云源 xff09 xf
  • 华为交换机SNMP配置

    华为交换机SNMP配置 snmp服务配置 交换机内设置snmp一般只需要启动snmp服务和配置团体名称 xff0c 然后设置下版本就可以了 全局模式下 xff0c 配置命令 1 启动snmp服务 xff1a snmp agent 2 设置团
  • qt 菜单栏创建

    h文件内容 xff1a pragma once include lt QtWidgets QMainWindow gt include 34 ui QtWidgetsApplication2 h 34 include lt QLabel g
  • 立志学习编程的第一天 2021-05-06

    一直很遗憾大学没能报计算机专业 xff08 还一直觉得自己是被耽误的程序员来着 xff09 现在且用业余时间来试试 xff0c 且拭目以待吧 xff01 学习内容 xff1a Clojure for the Brave and True 工
  • 关于Clojure的Emacs配置 2021-05-07

    首先安装lein和Emacs xff1a https leiningen org http www gnu org software emacs 安装好Emacs之后 xff0c 找到 emacs d 对windows系统 xff0c 文件
  • Clojure基础语法学习笔记(一)

    首先推荐两个目前正在学的免费学习资源 xff1a Functional programming in Clojure Clojure for the Brave and True 都是英文的 xff0c 第一个是边学边练的形式 xff0c
  • matlab interp2函数详解

    切入正题 xff1a 下面是一个测试INTERP2 xff08 xff09 函数的MATLAB代码 function INTERP2 TEST I 61 2 3 6 8 3 5 1 7 4 2 9 6 6 8 1 3 X Y 61 mesh
  • word2016转mathtype

    用word2016自带公式编辑器给师兄敲了一堆公式之后 xff0c 发现毕业论文要求用mathtype 官网给的解决措施是 xff1a 1 http www mathtype cn wenti wordgongshi zhuanhuan h
  • 虚拟机中Linux扩容硬盘空间

    在初始安装CentOS时 xff0c 只给了硬盘空间30GB xff0c 现在因为需要 xff0c 所以需要扩容 1 关闭虚拟机中的系统 xff0c 打开虚拟机的设置 xff0c 修改磁盘空间到合适的大小 xff0c 再重启系统 2 打开终
  • Vue3 - setup语法糖

    与setup函数不同的是 xff0c 在script标签中添加setup 1 变量 方法不需要 return 出来 属性和方法也不用返回 xff0c 也不用写setup函数 xff0c 也不用写export default xff0c 甚至
  • Autoware 安装(源码)过程 与 踩坑记录(Ubuntu18.04)

    目录 autoware 源码安装 安装 ROS Melodic xff1a 设置软件源 设置密钥 xff1a 安装ROS xff1a rosdep xff1a 安装rosinstall 添加ROS环境变量 配置ROS环境变量 创建工作目录
  • 读论文:Feedback Network for Image Super-Resolution

    源码 xff1a https github com Paper99 SRFBN CVPR19 1 介绍 xff08 1 xff09 基于深度学习的方法的优势主要来自其两个关键因素 xff1a 深度和跳跃链接 第一 xff0c 保留更多的上下
  • Kolla-ansible部署OpenStack Train实践

    Kolla ansible部署OpenStack Train实践 前言系统环境设置安装pip和docker安装ansible安装kolla ansible配置文件修改执行部署 登录openstack写在最后部署过程中遇到的问题总结 前言 最
  • Windows 7 如何升级 PowerShell

    操作环境 xff1a Windows 7 旗舰版 Service Pack 1 x64 PowerShell 2 0 gt PowerShell 4 0 解决过程 xff1a 1 下载Windows6 1 KB2819745 x64 Mul
  • 最简单的算法:线性查找法

    目录 写在前面 一 什么是算法 二 线性查找法 2 1 实现线性查找法 2 2 思维拓展 使用泛型 2 3 自定义类测试泛型方法 2 4 循环不变量 三 复杂度分析 3 1 复杂度分析简介 3 2 常见的算法复杂度 四 算法性能测试 写在前
  • Android仿抖音主页效果实现

    目录 写在前面 一 准备工作 1 1 主页面布局 1 2 列表Item布局 1 3 列表Item适配器 二 自定义LayoutManager 三 实现播放 补充 xff1a 源码地址 xff1a https github com JArch
  • 数据结构基础之动态数组

    目录 前言 1 Java中的数组 2 实现动态数组 2 1 基本类结构设计 2 2 添加元素 2 3 查询 amp 修改元素 2 4 包含 amp 搜索 amp 删除 2 5 数组扩容 前言 今天我们来学习一下关于数据结构的一些基础知识 x
  • 数据结构基础之栈和队列

    目录 前言 1 栈 2 队列 2 1 实现队列 2 2 循环队列 前言 上一篇中我们介绍了数据结构基础中的 动态数组 xff0c 本篇我们继续来学习两种基本的数据结构 栈和队列 1 栈 特点 xff1a 栈也是一种线性结构 xff0c 相比
  • 数据结构基础之链表

    目录 前言 1 什么是链表 2 添加元素 3 虚拟头结点 4 查询 amp 修改元素 5 删除元素 附 xff1a 完整代码 前言 又到周末了 xff0c 修整了一天 xff0c 继续来写点东西吧 xff0c 今天 xff0c 我们来学习数
  • Android开发之局部广播的使用——LocalBroadcast

    一直以来都想着写一篇关于四大组件的文章 xff0c 可是一直懒一直都没去写 xff0c 今天终于抱起了电脑来敲一篇 这篇文章是关于安卓四大组件之一的广播的使用 xff0c 网上关于这方面的文章也是相当多 xff0c 我这里根据我一年多的工作