android 通知_Android 全局消息通知框架实现(类似EventBus)

Github项目地址 https://github.com/532268948/MessageDemo

一、介绍

随着页面的增多,页面之间的信息交流也会越来越多,比如一个社交类app,你在个人中心修改了自己的个人信息,在动态展示页面你就要通知该页面有关于自己的动态需要更新自己展示在页面上的信息。 该框架的核心思想是在进入页面的的时候注册监听器,每一类事件监听器都有一个唯一标志符用来区分不同的事件,时间传递信息的媒介是Message,就是Handler中的,在Message中你可以传输自己想传的数据。

80c02431f0149f5936247494afdecd21.gif

二、用法

//注册事件

三、源码解析(以Activity为例)

注册事件

MessageManager.java

/**

MessageLooper.java

/**
从中可以看到有一个MessageLooper的新类,它是事件注册的核心,该类的功能是对所有注册事件进行统一管理,其中变量mMessageReceiver存储了所有的注册事件。
/**
ListenerContainer这个类,它主要是负责将不同页面的注册事件区分,方便注销当前页面的事件,在添加事件的时候会同时添加到该页面的ListenerContainer对象中,一个ListenerContainer对象包含了一个页面的所有注册事件。

注销事件

MessageManager.java

/**

ListenerContainer.java

/**

MessageLooper.java

/**
在调用ListenerContainer的clear()方法的时候在清空当前ContainerListener的listeners的同时清空MessageLooper中的注册事件。

发送事件

MessageManager.java

/**

MessageLooper.java

/**
发送事件时会遍历MessageLooper中的mMessageReceiver,如果有相同cmd的MessageListener会调用该Listener中的onMessage方法实现消息的全局接收。

Github项目地址 https://github.com/532268948/MessageDemo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2019运管取消了滴滴还查吗_劳务资质2019年取消吗?劳务资质新标准你真的了解吗?...

施工劳务资质2019新标准!劳务资质已经取消?不可能!虽然这样对于很多企业来说应该比较省事,劳务资质也是越来越受欢迎的,但是企业在办理资质之前一定要将资质标准了解清楚了,新版施工劳务资质仅仅是将专业进…

FFmpeg获取DirectShow设备数据(摄像头,录屏)

这两天研究了FFmpeg获取DirectShow设备数据的方法,在此简单记录一下以作备忘。本文所述的方法主要是对应Windows平台的。 1. 列设备 ffmpeg -list_devices true -f dshow -i dummy命令执行后输出的结果如下(注:中文的设备会出现乱码的情…

矩阵的对数运算公式_必修一——对数与对数运算

一、前言(废话)高中数学我们已经学习了二次函数,指数函数(如果不记得的读者可以往前面翻看一下),这次作者为读者们讲解的是对数与对数运算,对数是什么呢?读者们心里有自己的认知吗?二、对数对数函数是高中阶段学习的一…

分拣外观残缺的机器人_复合机器人AGV+协作机器人的应用领域

什么是复合机器人?复合型机器人是一种集成AGV移动机器人和通用工业机器人两项功能为一身的机器人。在工业领域,通用工业机器人被称为机械臂或者机械手,主要是替代人胳膊的抓取功能;而AGV移动机器人是替代人腿脚的行走功能。复合型机器人则是手脚并用&am…

前端之旅,做一点有回报的事情

本文是参加前端早读课【同说】做的分享 首先感谢情封对前端圈的辛苦付出,能坚持做好一件事真的很不容易,敬佩这份精神。2天前看到早读课的【同说】活动计划,我觉得想法真的很好,忽然情封微信邀请我参与,听到后我是心虚…

差异表达基因变化倍数_10.limma教程|差异表达统计相关理论

点击上方“蓝字”关注我们10.1 Top-Tables 简介limma包提供topTable和decideTests函数概括线性模型结果,进行假设检验,调整p值进行多重检验。结果包括(log2)倍数变化,标准误差,t统计和p值。用于显著性分析的基本统计量是修正t统计…

activemq中怎么知道推送消息是否成功_如何优雅的使用activeMQ 安装、应用、安全认证、持久化...

ActiveMQ安装1. 下载资源ActiveMQ官网:版本说明ActiveMQ5.10.x以上版本必须使用JDK1.8才能正常使用。ActiveMQ5.9.x及以下版本使用JDK1.7即可正常使用。上传至Linux服务器解压安装文件tar -zxf apache-activemq-5.9.0-bin.tar.gz检查权限ls -al apache-activemq-5.9…

DB2表结构DDL脚本导出

db2look是导出DDL语句脚本的命令&#xff0c;以下是对db2look的一个简单介绍。 语法&#xff1a;db2look -d <数据库名> -e -t <表名> -o <文件名>.dml -d&#xff1a;数据库名&#xff0c;这必须指定。 -e:抽取复制数据所需要的DDL文件&#xff0c;此项将生…

套装门安装_室内套装门-油漆工艺

上一期我们分享了套装门的分类和区别&#xff0c;主要从门芯和门皮的结构&#xff0c;主要分为纯实木门、实木复合门、模压门三种。也分享了三种类型的门的区别和基本定义&#xff0c;其中最为关键的是实木复合门&#xff0c;四层结构&#xff0c;其中门芯的填充料可操作空间很…

activiti 工作流_分享:springboot中关于工作流activiti的搭建

概念工作流产品使用activiti的算是比较多了&#xff0c;自带了一套UI界面&#xff0c;可以直接使用&#xff0c;用来设计流程&#xff0c;下面简单总结一下它的步骤&#xff1a;1 设计模型2 发布为流程&#xff0c;一个模型可以发布多个版本的流程3 建立一个流程的实例和实例任…

ae saber插件_AE激光插件Video Copilot Saber安装方法

AE激光Video Copilot Saber插件可以制作出能量光束&#xff0c;激光&#xff0c;传送门&#xff0c;闪电&#xff0c;电流&#xff0c;朦胧等特效&#xff0c;内含有40多种不同类型的特效预设&#xff0c; 下面说下AE激光插件saber安装方法。插件特色&#xff1a; 1.可以创建高…

继电器rc吸收电路取值_继电器的工作原理以及驱动电路解析

继电器是具有隔离功能的自动开关元件&#xff0c;广泛应用于遥控、遥测、通讯、自动控制、机电一体化及电力电了设备中&#xff0c;是最重要的控制元件之一。继电器实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。…

口腔取模过程及注意事项_康贝齿科首家引进LAUNCA数字化口腔扫描,走进口腔数字化诊疗时代!...

口腔领域中的数字化技术包括数字化印模、数字化诊断与治疗、数字化生产、数字化手术导航、影像学以及相关材料的应用等。20世纪70年代Duret医生将工业数字化生产技术应用于口腔临床工作的大胆设想&#xff0c;使口腔数字化印模技术应运而生&#xff0c;走进现代医学的前沿。该设…

dataframe修改列名_python dataframe操作大全数据预处理过程(dataframe、md5)

hive表的特征选择&#xff0c;不同表之间的join训练数据、测试数据的分开保存使用pandas进行数据处理显示所有列&#xff1a;pd.set_option(display.max_columns, None)显示所有行&#xff1a;pd.set_option(display.max_rows, None)单列运算&#xff1a;df[col2] df[col1].ma…

android 获取控件高度_安卓开发入门教程UI控件_ProgressBar

什么是ProgressBarProgressBar是用于提示用户进行等待的UI控件,.基础样例1.loading图效果图代码布局文件代码<ProgressBarandroid:id"id/progressBar"style"?android:attr/progressBarStyle"android:layout_width"wrap_content"android:layo…

什么叫大地高_什么才叫睡得好?睡觉能满足这5个标准,说明睡眠质量高

每个人的睡觉习惯以及睡眠质量都是不一样的&#xff0c;有的人一晚甜睡到天亮&#xff0c;有的人则整晚辗转反侧难以入眠&#xff0c;有的人甚至会整晚都睡不着。睡眠质量的高低会影响一个人的精神状态以及工作的状态&#xff0c;而想要知道你的睡眠质量高不高&#xff0c;其实…

mysql function_Koa2 amp; mySQL amp; PM2 搭建后端服务

嘘&#xff01;啰嗦一句话。作为一名前端开发工程师&#xff0c;我们平常和后端接触最多的就是接口的对接。那么后端同事是怎么写一个接口来给到我们前端的同学去获取数据库数据并做一些花里胡哨的功能呢&#xff1f;今天我们就用Koa2 & mySql来搭建一个后端服务器&#xf…

datetime报错 sql脚本_《SQL必知必会》附录A样例表的获取和导入

拿到书的第二天就坐上了疫情期间的第一次飞机。。。飞机还延误了2个小时&#xff0c;有国外入境转机旅客搭乘了该趟航班&#xff0c;第一次觉得疫情离我这么近&#xff0c;不过还是坚持着到达了目的地&#xff0c;能做的只有带好口罩和手套。3个小时的飞行时间被拖到了5个小时&…

python不同版本共存_多个python版本共存时的pip配置

两种方法来配置pip Func1: 1.1 找到python环境的安装包&#xff0c;将python.exe文件重命名&#xff0c;如&#xff1a;将python2.7版本的python.exe重命名为Python2.exe,将python3.x版本的python.exe重命名为python3.x.exe。1.2 下面找到python安装包下的 Scripts文件夹下 pip…

dubbo的端口地址和ip写在那_开源一款超实用的 Dubbo 测试工具,已用半年,感觉很有feel~...

不知道你是否在工作中有遇到过类似情况&#xff1a;dubbo接口调试复杂&#xff0c;需要通过telnet命令或者通过consumer调用来触发。telnet语句参数格式复杂&#xff0c;每次编写都要小心谨慎&#xff0c;一旦出错又需重来。复杂对象参数传参调用接口复杂&#xff0c;编写java …