位置: 编程技术 - 正文

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

  • 离职员工奖金发放规定
  • 坏账准备要写到明细账里面吗
  • 进项税额的计税基础是什么
  • 税收减免的定义
  • 销售货物开票及销售收入
  • 金税盘维护费发票需要认证吗
  • 企业所得税汇算清缴操作流程
  • 增值税零申报怎么报税
  • 无发票入账违反哪条法律
  • 进项税额结转不结转
  • 公司抬头的发票
  • 专票当月认证后什么时候抵扣
  • 房产税从价计征的计税依据
  • 小规模纳税人销售额
  • 公司买包包送员工入可以计入什么科目?
  • 高原补贴算工资吗
  • 计提工资需要工资表吗
  • 营改增后计税依据
  • 相互调转总分公司的原料物资 是视同销售吗?
  • 长期待摊费用要设明细科目吗
  • 货物毁损物流赔偿
  • 茶具可以作为固定资产吗
  • 债券折价摊销属于借款费用吗
  • 1697508301
  • 农产品零税率
  • 开发票有时间限制吗?
  • 打开我的电脑提示该文件没有与之
  • 企业安全库存是什么
  • 公司章程签署
  • 计算机网络默认网关什么意思
  • mac如何连接2个airpods
  • 现金流量套期的例子
  • 500万元固定资产管理办法
  • PHP:imagesetbrush()的用法_GD库图像处理函数
  • 企业的各项费用
  • 逾期未收回包装物押金增值税
  • 月初在产品成本+本月生产费用
  • 分支机构分摊税款的计算
  • 房租违约金怎么开发票
  • 计提费用收到发票后会计分录
  • element-ui tree
  • vue实战开发项目视频
  • 量子退火算法入门6
  • 应付款项怎么填列
  • 小规模纳税人定义
  • 普通发票作废算额度吗
  • 免抵退税额怎么计算城建税
  • 其他应收款个人挂账很大该怎么处理
  • 原材料退库的会计分录
  • 原材料入库单价20000出库单价800000
  • 小型微利企业可以享受研发费加计扣除吗
  • 未发货先开票是否违法
  • mysql sql性能调优的方法
  • mysql all
  • 故障的机器修好多少钱
  • 不动产经营租赁包括哪些内容
  • 哪些增值税专用发票不能抵扣进项税
  • 防伪税控服务费怎么交
  • 免税企业开了含税吗
  • 天然气管道安装费多少钱一米
  • 应付账款不需要付情况说明
  • 建筑业营改增的主要内容
  • 营业外支出包括哪些内容
  • ubuntu系统升级后无法进入系统
  • win7系统无法运行红警游戏
  • 怎么把mac系统的文件导出
  • rsmsink.exe - rsmsink是什么进程 有何作用
  • paytime.exe - paytime是什么进程 有什么用
  • windows2008输入法
  • jquery异步获取数据
  • unity3ds
  • jquery get(0)
  • shell批量执行curl
  • 重写SimpleAdapter的getView以实现按钮点击响应
  • jquery日期控件onchange事件
  • python 自定义类模块
  • jquery formbuilder
  • 电子税务局登录不上,显示用户名不匹配
  • 个人所得税申报怎么申报
  • 山东省地方税务局历任局长
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设