位置: 编程技术 - 正文

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

  • 当月红冲发票账务怎么处理
  • 金蝶迷你版年结怎么操作
  • 无形资产研发成功
  • 转账支票一定要收款人去取吗
  • 临时占用耕地可以种树吗
  • 转账显示未认证
  • 案件补贴
  • 企业收到的政府补贴,怎么入账
  • 限额领料单属于什么原始凭证
  • 小企业会计准则2023电子版
  • 购买的专利可以进费用吗
  • 成本核算会计科目包括
  • 年初未分配利润加本年净利润等于
  • 小规模纳税人没有收入怎么报税
  • 不涉及税收
  • 2017年事业单位b类真题及答案
  • 农民专业合作社属于什么企业类型
  • 累计已确认收入极可能不会发生重大转回
  • 同比增长率为负数怎么算
  • 一般纳税人所得税2023年税率
  • 投资收益企业所得税预缴
  • 在幻灯片中导入视频文件后视频文件时被几个圆点框选
  • 电脑屏发黄怎么调正常哪
  • 总公司中标分公司结算可以吗
  • 企业微信api错误码
  • 押金未退会计分录
  • php curl_multi_init
  • 低值易耗品费用账务处理
  • php redis常用命令
  • php文件操作小结怎么写
  • 其它收益和递延收益
  • 普通纳税人怎么交税
  • vscode怎么写前端代码
  • 民间非营利组织包括哪些单位
  • 织梦系统网站搭建教程
  • 帝国cms移动端
  • 织梦系统基本参数
  • 股东之间股权转让流程
  • 固定资产折旧费计入成本吗
  • access2000是什么
  • 递延所得税资产和负债怎么计算
  • 路桥费税率是几个点
  • 产品广告费属于什么会计科目类别
  • 账簿包括哪些基本内容
  • 间接人工费用计入什么科目
  • 公司购买的礼品卡怎么做账
  • 发票失控成本怎么算
  • 对公账户可以转让吗
  • 怎么理解什么是生命
  • 机票退票手续费太贵怎么办
  • 民非企业附加税计提和缴纳分录
  • 大额往来款项的认定
  • 金蝶多核算项目怎么查一个项目下的其他项目
  • 低值易耗的管理制度
  • 英语培训机构成人浦口区
  • 无形资产摊销费怎么算
  • MySQL 5.6 中TIMESTAMP with implicit DEFAULT value is deprecated错误
  • windows后台启动VirtualBox虚拟机让界面不在出现
  • xp系统个性化
  • win7操作技巧
  • cocos2dx怎么用
  • cocos2d游戏源码
  • 计算机图形学考研院校
  • vs2012怎么样
  • node运行js文件
  • 利用css样式控制文本的字体属性是什么
  • 前端面试题csdn
  • 对new functionName()定义一个函数的理解
  • shell基础教程
  • 怪物掉落物品的获取方式
  • 从零开始学什么技术
  • shell脚本计算执行时间
  • 安卓 html
  • js操作对象的方法
  • SublimeText自带格式化代码功能之reindent
  • jQuery Tags Input Plugin(添加/删除标签插件)详解
  • 同城通办办税大厅
  • 审计如何聚焦主责主业
  • 上海川沙十八铺市场
  • 到税务局领购免税产品
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设