位置: 编程技术 - 正文

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

  • 每月计提什么费用
  • 独立法人和法人独资的区别
  • 幼儿园经营支出指什么
  • 应税项目和非应税项目起征点一样吗
  • 企业所得税不预缴年终汇算可以吗
  • 货代企业都需要交什么税
  • 月末计提账务处理
  • 非独立核算的分公司可以开票吗
  • 存在标的的资产是什么意思
  • 借款合同 增值税
  • 房地产并购的税率是多少
  • 所得税申报错了扣款了怎么办
  • 所得税季报固定资产加速折旧表资产原值
  • 开票的时候确认收入吗
  • 研发支出与开发成本的区别
  • 企业风险应对的基本类型包括
  • 核销外管证需要什么手续
  • 收到一笔款在在当月已退回怎么做账?
  • 代账代税与自行核算申报应从哪几个角度考虑
  • 投资性房地产的后续计量从成本模式转为公允价值模式的
  • 其他业务成本借贷方向表示
  • 预缴增值税的情况四种情形汇总表怎么填
  • 最新早上好图片大全集
  • 电脑专用电源转换器
  • 实收资本要求
  • 税控盘技术服务费可以抵税吗
  • 向农民购进农产品
  • php时间戳相减
  • 苹果macOS 13.3 RC 发河北承德市承德县华夏电器
  • 公司为员工缴纳社保的基数怎么确定
  • lvgl使用
  • 银行代发工资会计科目怎么写
  • 已提减值准备的固定资产报废怎么填写
  • 财政返还土地奖金的规定
  • 如何解决焦虑
  • 房地产企业土地增值税预缴计税依据
  • vue父组件怎么调用子组件的方法
  • VUE-CLI/VUE-ROUTER
  • vue有哪些方法
  • 传统结算工具的不足有
  • mysql更新视图的方式
  • RedHat6.5/CentOS6.5安装Mysql5.7.20的教程详解
  • 其他应收应付如何平账
  • 库存商品和固定成本区别
  • sql server 2008r2连接
  • 分公司和总公司的税务核算
  • 预缴企业所得税计算公式
  • 已出库的成品退货怎么办
  • 公司名下的车怎样领免检标志
  • 消费税的特点及纳税环节
  • 收到发票应如何处理
  • 发票金额比实际付款多怎么做账
  • 老板借给公司钱需要交税吗
  • 增值税专票开具与发票专用章保管
  • 购买原材料无法准确划分用途的进项税额怎么抵扣
  • 收入的确认条件包括
  • 现金流量表补充资料怎么理解
  • 怎么填写专用发票信息
  • 减免税款属于政府补助利得吗
  • 三代个税返还算什么费用
  • 账簿设制的一般程序
  • win7 32位旗舰版电脑城下载
  • win8系统怎么设置投屏
  • mac怎么创建apple id
  • googletoolbarnotifier.exe是什么进程?GoogleToolbarNotifier怎么关闭?
  • win8系统怎么做系统
  • linux操作系统版本有哪些
  • microsoft ime进程
  • win7系统设备管理器没有端口
  • win10正式版和专业版的区别
  • 批处理语言 从入门到精通
  • python爬虫入门教程
  • eclipse cocos2dx Couldn't load cocos2dcpp from loader
  • androidui布局
  • 去掉字符串中的某个值
  • javascript如何学
  • js实现带搜索功能的下拉菜单
  • js中overlay
  • javascript图片
  • 安徽省电子税务局怎么下载
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设