位置: 编程技术 - 正文

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

  • 交车险代收的车船费怎么做的科目呀?
  • 零星采购不要发票可以吗
  • 抵扣联的抵扣期限
  • 存货的计价方法有哪些,具体内容是什么
  • 劳务公司发放农民工工资的三种形式
  • 企业收到免税发票后怎么开票
  • 货物已到发票未到怎么做账
  • 学校管理费是什么意思
  • 哪些发票可以抵扣成本
  • 交股权印花税需要什么材料
  • 纳税人为ETC卡充值取得财政票据进项税额抵扣问题
  • 关于有什么新的政策
  • 财务报表提供的信息仅对外部的投资者和债权人有用
  • 应收账款减值准备计提比例
  • 外币结算方式有哪几种
  • 成本利润率的计算公式中,成本费用总额包括
  • 房地产开发成本测算套表(全过程)
  • 增值税税控系统技术维护费每年都可以抵扣吗
  • windows刷新桌面
  • 个人取得的工资、薪金所得应按次征收个人所得税
  • 小规模纳税人个税怎么申报
  • 疫情期间企业贷款利率多少
  • 进项税额认证了也就是抵扣了吗?
  • 苹果手机下载爱思极速版有什么影响
  • PHP:Memcached::decrement()的用法_Memcached类
  • 期房怎么交易流程
  • 短缺的材料算不算入账价值
  • 职工教育经费支出包括哪些内容
  • 车辆被盗
  • 企业改制土地增值税政策
  • 债券到期收回本金和利息的会计分录
  • 会计准则新规
  • 跨年费用入账
  • 补缴去年的工会经费计提
  • uni-app实例教程
  • vue 图片转base64格式的方法
  • thinkphp extend
  • vgdisplay命令无效
  • php 银行卡支付
  • 车辆保险会计怎么做分录
  • 教育费附加减免政策
  • 织梦百科
  • mongodb官方文档中文
  • mongodb如何修改数据
  • 织梦如何采集文章
  • 股东转股怎么办理
  • 固定资产处置是当月还是下月
  • 增值税扣税凭证不包括
  • 应交税费的明细账怎么登记
  • 个税代扣代缴手续费返还需要缴纳增值税吗
  • 消防设备要多少钱
  • 销售人员的销售额是工作绩效的重要指标
  • 商场返券计算公式
  • 个体户如何做账?
  • 员工出差报销补贴政策
  • 收到建筑发票会计分录
  • 个人所得税多计算了一个月工资怎么办
  • 投资和注册资本
  • 失控发票进项税转出成本调整
  • 企业支付宝买东西怎么买
  • 微软历代操作系统
  • 如何查看网络连接密码
  • xp系统怎么调出任务管理器
  • 简述linux系统有什么优点
  • linux系统软件包安装
  • shell数值比较
  • kmswin7激活步骤
  • win8系统出现闪屏
  • cocos2dx官方教程
  • angular指令详解
  • Node.js中的核心模块包括哪些内容?
  • shell 编程 怎么运行命令
  • jquery表格隔行变色代码
  • excel执行python脚本
  • Python3使用requests发闪存的方法
  • 福建省电子税务局官网登录入口
  • 重庆购房退契税
  • 税务局发票邮寄需要多久
  • 广西税务申报增值税时为什么打开表格时总是加载中
  • 尾矿治理文件
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设