位置: 编程技术 - 正文

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

  • 出口退税逾期申报说明怎样写
  • 城镇土地使用税减免税政策
  • 进料加工为什么要差额确认收入呢
  • 过路费报销属于什么费用科目
  • 公司购买煤炭的会计分录
  • 收入 合同
  • 加计扣除和研发费不一致
  • 金税盘地区编号淄博
  • 开广告公司需要营业执照吗
  • 企业所得税查增值税吗
  • 垫资公司怎么收费50万
  • 环评费用包括哪些
  • 少缴纳社保怎么要求支付赔偿金
  • 递延收益的所得税影响
  • 应交税费应交增值税的三级科目有哪些
  • 汽车配件税收分类
  • 小微企业一季度30万免税
  • 私人账户转到企业账户
  • 分期付款买车的人多吗
  • 契税纳税义务发生时间税屋
  • 工业投资额是指什么
  • 筹资活动流入的现金是内源融资吗
  • 如何激活windows11专业版?
  • 开机进入睡眠模式按哪个键解除
  • ’sass_binary_site‘ is not a valid npm option问题的产生原因及解决办法
  • linux系统用法
  • 软件工程毕设题目冷门
  • 赞助收入税务处理
  • 前端如何调用后端方法
  • 一般纳税人取得普票会计分录
  • vue项目引入ts
  • php判断语句
  • 预算周转金会计处理怎么做
  • uniapp跨域解决方案
  • 网络安全网络文明
  • php忘记密码
  • 计提坏账准备需要确认递延所得税吗
  • 帝国cms可以做商标吗
  • 厂房建设包括哪些
  • 发票已认证未抵扣,开红字发票信息表后,愿票需要退回吗
  • 技术开发费免税政策
  • 发票行业税目怎么选
  • 新准则职工福利费包括哪些
  • 不动产租赁可以享受加计抵减吗
  • 销售提成如何入账
  • 物流辅助服务费属于什么费用
  • 非居民企业所得税征收方式鉴定表
  • 企业职工福利费的扣除标准是多少?
  • 包装物是指什么
  • 坏账准备的余额百分比法
  • 哪些业务可以开专票
  • 个体户4年不注销有事吗
  • 财报实收资本
  • 什么是企业管理的基础工作
  • 基本户转账法人会知道吗
  • 库存的周转天数
  • 建账的过程包括哪些内容
  • 注册表修改后如何生效
  • win8系统怎么关闭投影
  • window10节电模式怎么关闭
  • linux快速查找历史命令
  • retail版win10
  • cocos怎么用
  • opengl绘制点线面
  • jquery正则表达式的用法
  • android studio乱码怎么解决
  • jquery 放大镜
  • unity资源包管理器
  • javascript的
  • android 基类
  • 深圳市国税局咨询电话是多少
  • 一般纳税人出售房产怎么开票
  • 什么是城建税的纳税义务人
  • 江苏增值税发票代码
  • 莅临指导和莅临交流的区别
  • 进出口贸易产品种类
  • 税务局查帐流程
  • 广州市天河税务局电话号码
  • 税收收入弹性值
  • 城市维护建设税,教育费附加,地方教育费附加
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设