位置: 编程技术 - 正文

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 aop
  • 收外汇的账务处理实例
  • axios怎么使用
  • 最贵的苹果平板
  • 城市维护建设税计入什么会计科目
  • phpstorm怎么样
  • 比利时的平菇能吃吗
  • 固定资产清查盘盈盘亏的账务处理
  • 收回已确认的坏账准备为什么在贷方
  • 自产应税消费品用于在建工程要交增值税吗
  • 长期待摊费用属于非流动资产吗
  • java中通配符作用
  • 函数的单调性
  • percona-toolkit对MySQL的复制和监控类操作教程
  • 抵扣联怎么抵扣使用
  • 低值易耗品还需要录入明细吗
  • 中药和中药饮片有区别吗
  • 金蝶软件修改凭证
  • ibm-db2-admin
  • 公司控股另一家公司好与坏
  • 公司外部人员的差旅费
  • 员工工资可以当月计提当月发放吗
  • 本期盈余转入累计盈余
  • 小规模纳税人销售不动产适用税率
  • 工厂加工费如何计算
  • 收到公司的钱写收据
  • 年末结转本年利润分录
  • 茶农的茶叶自产自销需要办哪些证
  • 财产保险的金额
  • 总公司与分公司的关系
  • 认证测试方式有哪几种
  • mysql外键怎么写
  • sql server错误和使用情况报告
  • sqlserver 触发器 redis
  • mysql批量更新多条数据
  • FNPLicensingService.exe是什么意思
  • WebProxy.exe - WebProxy是什么进程
  • win10系统虚拟内存
  • excel自动关闭如何设置
  • Linux Shell 通配符、元字符、转义符使用实例介绍
  • cocos2dx怎么安装
  • javascript definitive guide
  • cmd读取d盘
  • linux安装nodejs xz格式
  • unity官方插件
  • jq设置下拉框的值
  • 对象类型怎么填
  • 音频资料下载
  • 贵州铜仁苗族自治区
  • 企业税务登记是什么证件
  • 实名办税有什么作用
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设