位置: 编程技术 - 正文

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

  • 免税收入对应的成本费用可以扣除吗
  • 公司贷款可以转私人吗
  • 一般纳税人结转销售成本怎么算
  • 企业组织结构的形式
  • 个人独资企业可以投资有限公司吗
  • 缴纳的专利年费能退吗
  • 城市维护建设税属于什么科目
  • 公司属于亏损状态,但是法人个人收入算公司账吗
  • 去年的成本没有入账
  • 企业成立股东没有实际出资分录怎么写?
  • 什么费用计入什么科目
  • 赠送的固定资产需要计提折旧吗?
  • 退休返聘人员被辞退未提前通知能要求多付一个月工资吗
  • 收到的专票都必须开吗
  • 业务订单需求表
  • 所得税的税率有哪几种
  • 暂估入库库存出现负数怎么办?
  • 政府采购 汽车
  • 税收法定原则的意义
  • 医疗服务免税发票怎么开
  • 进项大于销项下月可不可以抵扣
  • 发票遗失如何补开
  • 新版edge浏览器兼容ie
  • 总资产报酬率怎么查
  • 企业出售自用车账务处理
  • mac怎么彻底删除一个软件
  • vpengine.exe进程
  • 电脑老是弹出广告怎么处理
  • mac屏幕横过来了
  • 冲办公费会计分录
  • 其他应付款和其他应付款对冲
  • 企业所得税年报申报时间
  • 事业单位自营
  • 包工队人员受伤该由谁负责
  • 经营租出的设备要计提折旧吗
  • 未取得专用发票详细原因怎么写
  • 大前端最新
  • tftp传输命令
  • ps怎么参考线快捷键
  • 新购入的汽车需要年检吗
  • 费用化支出期末一般转入哪个账户?
  • 小规模纳税人增值税账务处理
  • 实收资本核算有哪些要求
  • 修理费账务处理
  • 什么时候贷主营业务成本
  • 利润分配未分配利润是净利润吗
  • 办公室租金产生的税率
  • 应收账款逾期什么意思
  • 独立核算分公司与总公司的账务处理
  • 财务报告分析主要内容
  • 计提工资的凭证要附单据吗
  • 社保退回的钱怎么做会计分录
  • 利润分配审计案例
  • 工厂的委托加工怎么写
  • 制造费用不结转成本 报表平吗
  • 新设企业如何建账
  • sqlserver提示功能怎么打开
  • jquery常用的事件绑定函数有哪些
  • MySQL 5.7 mysql command line client 使用命令详解
  • sql触发器菜鸟教程
  • mysql7.x单独安装mysql的方法
  • 巧用护手霜保养皮衣
  • ubuntu搭建hexo
  • mac book丢失
  • mac搜索app
  • SCHDPL32.EXE - SCHDPL32是什么进程 有什么用
  • yum could not resolve host
  • win8电脑卡怎么办简单步骤
  • unity3d c语言
  • python3.6语法
  • js utf-8编码转换中文
  • ecmascript新特性
  • jquery鼠标点击
  • javascript中var的作用
  • 残疾人交房产契税有优惠吗
  • 重庆电子税务局怎么绑定办税人员
  • 如何做好税收工作推动税收事业创新发展
  • 税务局 环保税
  • 广东省电子税务局app下载官网
  • 江苏发票认证平台app
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设