位置: 编程技术 - 正文

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基础知识入门)

  • 个税手续费返还交增值税,但是6%的那行是灰色的
  • 购销合同印花税按70%
  • 增值税的免税项目有哪些
  • 土地增值税间接费用扣除
  • 减去税率怎么算
  • 全年交多少税可以退
  • 零售盘点窍门
  • 本年利润,利润分配
  • 确认应收账款不确认收入
  • 软件开发服务费会计分录
  • 运输营改增
  • 商品编码选错税务会直接罚款吗?
  • 已出账但未认证的抵扣联怎么办?
  • 工程结算收入和应收账款的区别
  • 降温费和取暖费标准
  • 维修材料属于什么会计科目
  • 存货中的生产成本是指
  • 企业所得税的计算公式及实例
  • 退货抵扣是什么意思
  • 周转材料盘点报告单
  • 现金股利属于什么所得
  • Windows10如何切换中英文输入法
  • 电子发票上的电子税章如何才能自动生成
  • 小微企业财务报表报送时间
  • quickdcf.exe - quickdcf是什么进程 作用是什么
  • Win10新版21364发布: 可直接运行Linux图形程序
  • 筹建期间费用如何记账
  • 营改增后房地产企业账务处理
  • 承租人对经营租赁和融资租赁会计处理方式
  • 社保挂靠会计处理?
  • PHP:imagesetinterpolation()的用法_GD库图像处理函数
  • 三年以上的应付账款
  • phpsql查询
  • 以前年度损益科目代码
  • 法院判定支付对方诉讼费,我可以入账吗
  • yolov8训练自己的数据集 Windows
  • vue3 script setup withdefault
  • php微信公众号开发反回图片怎么弄的学校
  • 指令获取
  • 普通发票作废算额度吗
  • 帝国cms会侵权吗为什么
  • 公司开电费发票该怎么入账?
  • 债权人豁免债务的账务处理会计分录
  • 其他应收款主要核算什么
  • sql server恢复
  • 缴纳工会筹备金会计分录怎么写
  • 企业所得税季度预缴纳税申报表
  • 投资公司如何运作
  • 股权转让是否需要全体股东签字
  • 工作失误扣工资的规定是什么
  • 研发费用按50%的预算
  • 账外房屋按评估值入账怎么进行会计处理
  • 银行利息收入如何记账
  • 怎么用两台电脑登录同一个微信
  • 跨年度的项目如何做
  • 高新企业研发项目规定几个
  • 明细分类账的填写
  • mysql8.0 主从
  • xp系统创建本地连接的方法
  • sed 处理多行
  • win8个性化设置
  • win8桌面在c盘的路径
  • js时间范围
  • ztree拖动
  • Node.js中的事件循环是什么意思
  • nodejs实战教程
  • 画廊作品
  • shell脚本入门详解
  • python调用bash
  • 安卓wifi已连接不可上网设置
  • 批处理 !!
  • 使用脚本什么意思
  • node的理解
  • python基础教程视频教程
  • JavaScript事件类型中UI事件详解
  • jquery滚动条滚动到指定位置
  • Mac Error Create Android Project - “Errors running builder 'Android Resource Manager' on project”
  • 东莞市税务局稽查局
  • 税控盘登陆失败
  • 中国银行手机银行app官方下载
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设