位置: 编程技术 - 正文

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

  • 小规模纳税人征税规定
  • 税务登记如何注销
  • 租土地使用权建房
  • 分公司怎么分配股权
  • 核定征收企业股权转让所得税
  • 企业融资租赁是什么意思
  • 流动负债是总负债吗
  • 个人所得税如何申报
  • 劳务派遣营改增政策
  • 补记固定资产
  • 增值税过期未抵扣
  • 预收账款在什么科目核算
  • 通过无偿取得的成果
  • 印花税资产划转
  • 制作费算什么费用
  • 公司住宿费用记什么费用
  • 代缴公司不给停社保怎么办
  • 专项维修基金所得税可税前扣除吗?
  • 以前年度的费用可以入在当年吗?
  • 定期结汇会计分录?
  • win10右键个性化提示该文件没有与之关联
  • 坏账准备属于哪个会计科
  • 哪些抵押物必须登记才有效
  • 服务外包企业
  • 融资租入固定资产改建支出计入
  • 上年度多计提的工资
  • 合同结算账务处理分录
  • macbookpro怎么打开活动监视器
  • 购入研发设备
  • 融资租赁ppt
  • 撤销与恢复快捷键分别是什么
  • 采用权益法核算
  • hook execution failed
  • django cookie
  • 结转工资费用
  • 挂车车船税缴纳地点
  • 使用php连接多种数据库
  • 什么是前后端分离的方式
  • Linux | 将SpringBoot+Vue项目部署到服务器上
  • mysql+php
  • 电子回单是什么样子
  • 固定资产加速折旧是什么意思
  • 预提的管理费用,汇算清缴怎么做
  • vscode主题插件护眼
  • 残保金 滞纳金
  • 购买办公楼之后怎么入住
  • 印花税每个月都要申报吗
  • 个税没有达到起征点能摇号吗
  • sqlplus查询结果换行
  • 工商年报纳税总额包括滞纳金吗
  • 资产现金流量收益率为什么不是净利润除以平均现金流量
  • 给保安买大衣算贿赂吗
  • 小微企业要记账吗
  • 核定征收需要什么资料
  • 生育津贴与员工有关吗
  • 个人社保缴纳会不会自动扣款
  • 什么是逐步结转分步法
  • 知识经济对会计的影响论文
  • 搜狗拼音输入法xp系统
  • 怎样彻底关闭win11安全中心
  • 图形化ssh
  • msg0是什么文件
  • win8.1开机进入桌面
  • windows 8 开发者预览版
  • win7使用临时配置文件登录
  • cocos2d怎么用
  • cocos2dx scrollview
  • css display none之后怎么显示回来
  • jQuery的extend方法【三种】
  • android图片库
  • 设计模式工厂模式使用场景
  • sed查找字符串
  • 使用粗盐热敷十大危害
  • unity常用api
  • shell python
  • unity或者
  • 阿里巴巴技术文档翻译工资
  • 如何在河南省社会保障网上平台进行社保基数申报
  • 盐城企退人员养老金调整新标准
  • 签订设计合同
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设