位置: 编程技术 - 正文

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

  • 非征税期抄税如何解决
  • 润滑油怎么做账务处理
  • 基本户零流水如何处理
  • 公司购买汽车的购置税怎么做账
  • 加计扣除是什么意思举例说明农产品
  • 筹办期的工资费用是什么
  • 增值税10%怎么算
  • 公司利润如何提取避税
  • 公司买车赠与员工
  • 应收帐款从工资里扣税吗
  • 两个公司的现金怎么交税
  • 未收到发票暂估入库的进项税额可以暂估进原料成本吗
  • 劳动合同解除和终止的经济补偿
  • 增值税普通发票需要交税吗
  • 生活服务业包括哪些行业照片
  • 筹建期间的工资可以直接记到管理费用吗
  • 成品送检单表格
  • 进口税退税
  • 单位自办食堂为单位职工提供餐饮服务要交增值税吗
  • 用友软件查其他业务收入怎么查
  • 企业将自有房产全部租出去房产税如何征收
  • 进项抵扣发票如何查询
  • .exe是指什么文件
  • PHP:is_writeable()的用法_Filesystem函数
  • elementui中的el-tab-pane为什么内容会为0
  • 银行本票存款和银行存款的区别
  • webpack--》webpack底层深入讲解,从初识到精通,真正实现从0到1的过程
  • 企业收到借款利息收入是否交增值税
  • java项目报错
  • 调频连续波雷达
  • java如何实现异步处理
  • ghostnet改进
  • 从零开始文章
  • thinkphp如何做微服务
  • 进口固定资产支付的关税
  • 专项应付款二级明细科目有哪些
  • 企业所得税中工资总额
  • 个人出租租房交什么税
  • 开增值税发票需要和收款账户名字一致吗
  • 股东撤资怎么做账
  • phpcms怎么样
  • php前台模板
  • mongodb运行
  • 资产负债表日后至财务报告批准报出日之间
  • 企业转让股权如何缴纳企业所得税
  • 企业从银行借款会导致其营运资本
  • 定额计税的有哪些
  • 废旧物资专用发票
  • mysql如何开启
  • 公司对公账户转给个人
  • 残保金未交,滞纳金怎么算
  • 购入研发设备可以全额抵扣吗
  • 高新技术企业研发费用归集
  • 管理费用如何核算
  • 老板买了手机,算入什么费用
  • 跨年跨月发票账务处理
  • 增值税是什么的抵减项目
  • 股东追加投资如不追加会怎样
  • 汽车折旧年限是多久
  • 删除一组数据中的指定数据
  • sqlserver1053怎么解决
  • mysql中一个普通ERROR 1135 (HY000)错误引发的血案
  • 浅谈幼儿良好行为的培养论文
  • 安装并激活navicat
  • avsched32.exe是什么进程 avsched32进程有什么作用
  • winxp开启远程桌面连接
  • 获取windows的最新信息要跳过吗
  • layui nodejs
  • python中列表删除
  • python输出1-100
  • perl常用函数
  • JavaScript中的math.pi
  • 禁用javascript后果
  • javascript数学函数
  • linux0.11编译
  • python类中的函数必须加self吗
  • jquery $each
  • 地税税务稽查管理办法
  • 车辆购置税需要每年都交吗
  • 企业税务状态查询网站
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设