位置: 编程技术 - 正文

Android:Otto源码分析(android源码分析)

编辑:rootadmin
Otto源码分析

推荐整理分享Android:Otto源码分析(android源码分析),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android looper源码,android systemui源码分析,android demo源码,android glide源码分析,android glide源码分析,android looper源码,android dialog源码,android systemui源码分析,内容如对您有帮助,希望把文章链接给更多的朋友!

Otto是一个轻量级的EventBus,它的使用非常简单,我们使用一个Bus的单例,所有需要产生事件(@Produce bus.post(new YourEvent(…)))或者处理事件(@Subscribe)的对象,在create时register,销毁destroy时unregister即可。

使用@Subscribe 订阅事件,也就是事件的处理者,它有且仅有一个参数YourEvent,每一个Subscribe对应处理一个YourEvent。Event用于连接(匹配)post和订阅。@Subscribe使用举例:@Produce 产生事件,改方法在对象被register后即被调用(–使用情况比较特殊的),该方法必须有一个非空的返回值,参数必须为空。bus.post(new YourEvent(…)) 发送一个事件,等待@Subcribe处理使用举例MainActivityBusManager 是一个单例MyEvent 自己定义的事件类运行结果

每次调用registe()方法是,会立即调用@Produce方法,将return的事件发送出去,由参数为MyEvent的@Subscribe方法接收并处理。bus.post()也是如此。

原理

主要是Bus.java里面的代码: 关键的方法有

public void register(Object object) 该方法的作用是查找object里面所有带有Produce和Subscribe注解的方法,并保存在Map中,并且会立即执行Produce注解的方法。

Android:Otto源码分析(android源码分析)

public void post(Object event) 发送事件event,根据之前注册过的object里面的方法,查找参数为event的Subscribe方法,并invoke该方法。这样就达到了post之后,调用对应Subscribe方法的目的。

public void unregister(Object object) 注销object,删除掉map中保存的object的方法,释放object,防止内存泄露。

Bus源代码

具体代码如下:

有趣的小工具AnnotatedHandlerFinder

当你自己写框架的时候,很多时候需要用到Annotation查找,

更多交流

Android开发联盟QQ群:

android学习 - 问题1 - 项目名称:1-hello运行报错 一、问题Eclipse-ADT编写helloWorld程序,项目名称1-hello,运行报错InstallationfailedduetoinvalidAPKfile!二、原因项目名称不能以数字开头,只能以字母或下划线开

Android学习 - Android图片变换处理 Matrix图片变换主要讲解一下如何处理对一个Bitmap对象进行处理,包括:缩放、旋转、位移、倾斜等。在最后将以一个简单的Demo来演示图片特效的变换。M

Android学习 - 圆形ImageView 先看下效果图:publicclassRoundedImageViewextendsImageView{privateintborderThickness;privateintborderColor;privateBitmapimage;privateContextcontext;privateintwidth=0;privateintheight=0;publicRou

标签: android源码分析

本文链接地址:https://www.jiuchutong.com/biancheng/381105.html 转载请保留说明!

上一篇:Android学习 - Android应用如何支持屏幕多尺寸多分辨率问题(android怎么学)

下一篇:android学习 - 问题1 - 项目名称:1-hello运行报错(android基础知识入门)

  • 税务机关代开的增值税发票要加盖发票专用章吗?
  • 远期交易怎么结算
  • 什么是未投入使用的固定资产
  • 购买方怎么写分录
  • 2019最新运输发票样本
  • 捐赠和赞助业务的税务处理怎么做?
  • 异地施工缴税增值税交多少
  • 机器不生产计提折旧吗
  • 教育服务增值税纳税义务发生时间
  • 周转材料租赁费怎么结转成本
  • 跨月销项负数发票怎么做账
  • 酒店筹建是什么意思
  • 增值税普通发票可以抵扣吗
  • 收到设备租金计入什么会计科目
  • 不得抵扣且未抵扣什么意思
  • 本年已预缴所得税
  • 所得税按利润总额的25%计算缴纳
  • 固定资产借方表示什么意思
  • 个体户需要记账嘛
  • 劳务服务公司可以承包大型工程吗?
  • 印花税的计税依据是销项和进项的金额
  • 注册表修改系统安装日期
  • win10打开游戏老是提示
  • paypal授权书怎么填
  • 未知格式或损坏文件怎么办
  • mac触控板使用技巧
  • 房地产企业怎么结转成本
  • 生产物料报废
  • 未取得发票入账违反什么规定
  • 公司帮员工买社保能扣税吗
  • windows 11 正式版实际使用体验如何?
  • 未到期的应收票据办理贴现会计分录
  • 股票红利税如何收
  • 培训类产品
  • 居民企业境外所得税率
  • 应收票据影响现金流吗
  • 教你一行代码
  • 职工参加生育保险
  • vue-bus
  • php解释器工作流程
  • 车间管理人员为什么是制造费用
  • 贷款利息发票可以随便开吗
  • 个税扣错了申请退税
  • 入股资金打入公司账户
  • 金税盘抵扣的结转会计分录
  • 暂时性差异的产生
  • 社保退回的款怎么入账
  • 航天信息的发票以什么形式导入开票信息
  • 电费已支付未充值
  • 为什么车船税没有发票
  • 出口退税申报分录怎么写
  • 押金抵货款怎样写协议
  • 异地预缴增值税多交了怎么办,可以退吗
  • 党建经费可以购买什么
  • 免税收入包括哪些项目
  • 购入工程物资支付的增值税应计入
  • win8怎么卸载应用程序
  • ubuntu拨号上网设置
  • winpsd.exe - winpsd是什么进程
  • uca1
  • 怎么给ubuntu扩容
  • mac 地址栏
  • mcshield.exe是什么进程
  • jusearch是什么程序
  • win8计算机配置在哪
  • win10家庭版教程
  • win8如何设置默认输入法
  • javascript学习指南
  • 下载一个网页的所有图片
  • JavaScript window.document的属性、方法和事件小结
  • jquery的问题
  • boostrapping
  • 三分钟带你玩转灭火器
  • 税务局约谈严重吗
  • 如何开具红字发票明细
  • 公司权责清单范围
  • 中华人民共和国刑法
  • 总公司与分公司签订承包协议
  • 地税收社保
  • 徐州市税务局第三稽查局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设