位置: 编程技术 - 正文

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发票开票中
  • 增值税改革后增值税申报表怎么填写
  • 金税盘无法连接jk开票
  • 购买商标权税率多少
  • 什么叫外埠存款
  • 采购退回的分录
  • 用工会经费发放福利
  • 收付实现制与权责发生制的区别
  • 银行端查询缴税凭证在哪里缴费
  • 纳税人在什么情况下可以申请延期申报
  • 收到汇算清缴退税的现金流量
  • 审计查出假发票怎么补救
  • 建筑行业预交增值税什么时候预交
  • Linux系统中Squid代理服务器配置全过程解析
  • xp系统电脑关机后又重启怎样处理
  • gnu/linux
  • 圣托里尼岛游玩攻略
  • 黑暗的树荫
  • php如何上传1个g以上的文件
  • 企业年度报告内容
  • vue3中使用for循环引用多个组件
  • stable Diffusion安装教程
  • 补缴税款后还能退税吗
  • 我的年终总结怎么写
  • vmstat命令 监视系统资源状态
  • 应收账款的
  • 小规模纳税人的增值税计入成本吗
  • 个人以不动产投资入股土地增值税
  • dedecms怎么改图片
  • 个体工商户未年报 经营异常罚款
  • 银行对账单可以作为原始凭证入账吗
  • 微信支付宝等第三方支付的优缺点
  • 金税四期的主要功能
  • 以前年度费用退回
  • 转让旧固定资产怎么处理
  • 建筑施工企业适用什么会计制度
  • 水泥建材销售公司有哪些
  • 无法收回的应收账款可以税前扣除吗
  • 专项资金账务体现不出怎么办
  • 农业合作社账务都有什么科目
  • 固定资产如何抵扣进项税额
  • 预付账款在何时可以转出
  • 保修的产品还收费吗
  • 收承兑汇票的利息怎么算
  • 日常生活中常见的气质类型包括
  • 销售合同的印花税由谁交
  • 个体户未进行抄报税怎么处罚
  • 解除非正常户罚款调整操作
  • 如何科学设置运动负荷
  • 在mysql中,创建数据库的基本语法格式是
  • mysql两者之间
  • mac设置多个桌面
  • macbookair网页全屏
  • linux ssh免密码
  • windows xp
  • win8搜索框怎么打开
  • win8.1怎么设置
  • extjs DataReader、JsonReader、XmlReader的构造方法
  • 如何修改excel数据显示格式
  • jQuery实现select模糊查询(反射机制)
  • node.js安装教程详细
  • nodejs bff
  • 转换目录的命令
  • shell数值比较
  • Node.js中的construct
  • Node.js中的全局变量有哪些
  • mac打开多个窗口
  • unity strangeioc
  • JavaScript基础语法
  • js访问thymeleaf值
  • android_sqlite开发入门
  • 税务局开展活动
  • 以房产作价投资增值税怎么算
  • 资源税的税目,税率依照税目税率表执行
  • 单位轿车出售怎么处理
  • 个人所得税app密码给别人有风险吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设