位置: 编程技术 - 正文

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的使用举例

  • 支付宝如何缴纳车辆购置税
  • 评估入账几种情况
  • 公司没有账目违法吗
  • 对方开具红字发票信息表后我们怎么开负数
  • 新公司实收资本
  • 外国公司开发古镇
  • 索赔怎么开票
  • 2019所得税新政策
  • 土地增值税清算是什么意思
  • 单位补缴社保会罚款吗
  • 你觉得微信提现收费合理吗?
  • 经济补偿金也需要交个人所得税吗?
  • 进口增值税关税怎么付
  • 多交税费退税会计处理
  • 应税销售额含不含税
  • 项目部临时设施平面图
  • 进项税的现金流怎么填
  • 物业收租金必须要发票吗
  • 印花税税基含不含增值税
  • 计提资产减值损失账务处理
  • 海关票怎么认证
  • 单位给个人付款分录
  • PHP:xml_get_current_column_number()的用法_XML解析器函数
  • 投资企业流程
  • u盘无法格式化为NTFS
  • 收到客户预付的货款的会计分录
  • 购货方收到红字发票要认证吗
  • win10版本1909和22h2
  • 报废汽车残值收入的商品编码编码
  • csinsm32.exe是安全的进程吗 csinsm32进程有哪些用处
  • 酒店购进布草可直接确认为成本吗
  • 社保缴费基数如何调整
  • 二手车销售发票的开具怎么处理?
  • 未开票收入不申报处罚
  • 无法偿还的应付账款计入什么科目
  • 增值税发票认证抵扣时间规定
  • 公司汽车折旧计算方法用那种
  • php微信公众号消息推送
  • 前端跨域解决方案设计
  • vue-cli(vue脚手架)超详细教程
  • laravel 实例
  • 来料加工企业的划分标准
  • 应收及预付款项的思维导图
  • 土地出让金抵扣进项税
  • 对公付款对方不开发票可以吗
  • 服务型企业要缴哪些税
  • 应收账款的明细科目一般按照什么设置
  • 上级补助收入科目
  • 金蝶多核算项目怎么查一个项目下的其他项目
  • 电子发票开票方怎么做账?
  • 如何判断企业处于什么阶段
  • 账户设置的三种情况
  • sqlserver查询数据库数据量
  • centos7阿里云yum源
  • freebsd版本
  • 系统密码设置
  • win10系统哪款好
  • qclean.exe - qclean是什么进程 有什么用
  • 重装系统后要重装软件吗
  • mcappins.exe - mcappins进程是什么文件 什么意思.
  • win8.1技巧
  • windows 8开机
  • cocos2dx入门
  • 原生java web
  • python函数例子
  • 相同目录
  • js日期操作
  • 深入解读我本是高山
  • javascript数据类型有哪些
  • cd跳转不到目录
  • 深入理解javascript特性
  • dom教学
  • python操作数据库语句
  • js super方法
  • python 基础 教程
  • 人事科负责人是否必须是党员?
  • 土地增值税清算退税涉及企业所得税补缴
  • 买房契税发票图片别人看到了有危险吗
  • 深圳国委
  • 深圳税务局官方客服电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设