位置: 编程技术 - 正文

Android:Otto源码分析(android app 源码)

编辑:rootadmin
Otto源码分析

推荐整理分享Android:Otto源码分析(android app 源码),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android源码怎么运行,android dialog源码,androidstudio源码网,androidstudio源码网,android systemui源码分析,android dialog源码,android dialog源码,android源码分析,内容如对您有帮助,希望把文章链接给更多的朋友!

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 app 源码)

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:ValueAnimator的使用举例 由来很多人对ValueAnimator不熟悉,其实ValueAnimator的功能是非常强大的。它按照设定的时间和规则,在Update方法中将value友from变化到to。说起来很简单~动画

android:模拟水波效果的自定义View Github地址:

android:3D垂直翻转动画-FlipAnimation 需求对ImageView进行类似于翻纸牌的动画解决各种Animator的组合第一步动画:动画代码文件1,card_flip_left_out.xml?xmlversion="1.0"encoding="utf-8"?setxmlns:android="http:/

标签: android app 源码

本文链接地址:https://www.jiuchutong.com/biancheng/368643.html 转载请保留说明!

上一篇:android:Background线程池和UiThread线程池

下一篇:Android:ValueAnimator的使用举例

  • 申请A级纳税企业需具备哪些条件
  • 生产型企业进项税加计扣除
  • 劳务费用 税率
  • 电梯广告租赁属于哪类
  • 开票系统里红字发票怎么开
  • 过路费是来回收费还是单向
  • 怎么办开户许可证
  • 外币折算准则规范的外币交易
  • 事业单位支付方式
  • 固定资产累计折旧完了怎么办
  • 企业报税盘入账应该记入哪个科目?
  • 建筑公司挂靠项目账务怎么做?
  • 对方公司不能开发票怎么办
  • 企业咨询服务费合同
  • 红字发票信息表可以撤销吗
  • 税收奖励需要纳税吗
  • 股权案例分析2020
  • 进项发票认证抵扣时间有限制吗
  • 进口货物退税流程
  • 包装物租金怎么算
  • 无法收回的款项摘要怎么写
  • 工伤保险的作用有
  • 预提利息的分录怎么做
  • 企业固定资产出售账务处理
  • word更改单页背景颜色
  • 参加活动获得的荣誉怎么写
  • 网速慢是什么情况
  • 三元运算符判断闰年php
  • phpfilter
  • 金融保险业的营业税率为
  • 合规检查中检查不了的设备
  • 怎么用云服务
  • 委托加工的材料成本包括辅助材料成本吗
  • 人脸清晰化神器软件
  • 微信小程序几几年上线的
  • php zmq
  • 小规模纳税人申报表模板
  • 传统结算工具的不足有
  • 固定资产处置科目有哪些
  • Python的aiohttp模块如何使用?
  • pythonif嵌套语句
  • 织梦怎样实现文件上传
  • 固定资产清理的金额怎么算
  • 增值税专用发票怎么开
  • 自来水适用3%税率还是9%税率
  • 企业的财务报表不包括
  • 空调维修费入办公费还是修理费
  • 以前年度损益调整属于哪类科目
  • 建筑工程人工费包括哪些内容
  • 合同资产和合同负债的区别
  • 电费发票没有谷段电费
  • 预计负债计提时调减还是调增
  • 企业银行存款属于什么会计要素
  • 企业转让固定资产属于什么收入
  • 今年缴纳上年的税收滞纳金
  • 汇兑损益的账务处
  • 往来是啥意思
  • 初中学历学会计难不难
  • 企业初建
  • sql有哪些语句
  • win10怎么获取
  • explorer.exe进程被结束怎么恢复
  • linux防火墙放行
  • linux引导程序有哪些
  • linux系统磁盘管理的主要内容
  • Linux系统中配置网络
  • cocos2dx游戏案例
  • unity 插件开发
  • node.js最新版
  • node·js
  • flask使用celery
  • python strip函数作用
  • jquery封装的函数
  • jquery的筛选
  • js 比较
  • jquery ajax结合thinkphp的getjson实现跨域的方法
  • 个体工商户个人所得税
  • 湖北省税务局官网电话
  • 货物运输代理服务税率
  • 如果快递没有按时发货东西变质怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设