位置: 编程技术 - 正文

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

  • 工会经费的计税依据是含税还是不含税
  • 出口免税收入会退税吗
  • 新车车船税怎么交
  • 个人独资企业怎么取钱
  • 开票打印机可以自己买吗
  • 2020年企业减免
  • 小规模纳税人印花税怎样计算
  • 企业库存现金的限额是由( )核定的
  • 票据贴现的账务处理案例
  • 法人收到票据用什么抵扣
  • 冲减预提费用
  • 产权转移书据印花税是双方交吗
  • 资源税是否需要计提?
  • 以前年度损益调整属于哪类科目
  • 本月计错多发的工资可以不交个税
  • 开票系统里的开户行可以更改吗
  • 个人申请税务局开技术服务发票如何收费
  • 发票一定要开完了才能领取吗?
  • 未确认融资费用属于企业资产类科目对不对
  • 工程发票开具所需资料有什么?
  • wifi认证失败怎么办
  • 农业公司收到项目资金
  • linux GTK、KDE、Gnome、XWindows 图形界面区别介绍
  • 雨林木风 u盘
  • 重装系统后怎么恢复原来的系统
  • 爱荷华州的首府
  • php字符串函数有哪些
  • 文件夹字体怎么变大
  • win11测试版后续怎么变正式版
  • hkc中文是什么意思
  • php strtok
  • 禁止input标签输入
  • 凭证包括几个部分
  • 企业所得税扣除限额标准
  • php二维数组添加数据
  • html表白代码动态
  • 损益类科目资产增加在借方还是贷方
  • Vue3【Transition(效果、CSS 过渡、使用animation、TransitionGroup、 KeepAlive、Teleport )】(七)-全面详解(学习总结---从入门到深化)
  • php返回上一级
  • 休产假期间社保个人部分怎么办
  • tsar命令 收集服务器系统信息
  • 应收账款未计提怎么处理
  • 待抵扣进项税额的账务处理
  • 对方不给开发票做账可以直接出费用吗?
  • 石油预付款发票怎么开
  • 公司缴纳社保应该怎么做账
  • javascript 箭头
  • python smote算法
  • 保险支票托收
  • 企业迁移税务如何办理
  • 土地使用权如何取得
  • 住宿费用专票可以抵扣吗
  • 公司法规定股权转让需要满足什么条件
  • 差旅费包括哪些费用
  • 现金日记账谁负责
  • 考试报名费都去哪了
  • 企业零申报要报哪些税
  • 如何搭建mybatis
  • 一个绝招 组合的成语
  • 催化剂过低怎么解决
  • LINUX操作系统的主要组成部分有
  • window10打补丁
  • win8电脑背景变成黑色的了是为什么
  • Win7系统不小心将TCP/IP协议卸载如何重新安装?
  • xp系统怎么关闭更新系统
  • macbook不可以插u盘吗
  • win10企业版20h2和1909
  • surface准备就绪
  • Ubuntu 14.04 LTS中安装fcitx中文输入法的教程
  • android:LruCache缓存小结
  • 批处理!!
  • 人应该掌握的基本知识
  • jquery 定位
  • android怎么学
  • javascript零基础入门
  • jquery中的事件
  • 曲剧全场戏双玉蝉
  • python单链表输出1到10
  • ndk调用so
  • 税率分几种 分别是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设