位置: 编程技术 - 正文

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

  • 符合条件的小型微利企业所得税税率为
  • 三税率什么意思
  • 不能从销项税额中抵扣的进项税额都有什么
  • 宁波财税网会计之窗官网
  • 软件和硬件如何集合使用
  • 年初存货跌价准备余额是上年末结转的吗
  • 百旺金赋的服务费必须交吗
  • 人工费能不能抵扣进项税
  • 所得税年度纳税申报表 从业人数怎么填
  • 跨月作废增值税专用发票
  • 劳务公司一般纳税人开票几个点
  • 应付债券转为实际债务
  • 注册商标怎么做账
  • 个人外汇收入如何纳税
  • 租赁的生产设备计入哪个科目
  • 税款不申报会怎样
  • 利息算增值税吗
  • 会计报表指标也称为什么
  • 购物预付卡怎么用
  • 所得税年报流程
  • rmb转
  • 免税收入与不征税收入的区别
  • phpstudy的ftp
  • 查补以前年度收入
  • 巴拉诺维奇市
  • 最早的操作系统被称为什么操作系统
  • php生成条形码的代码
  • PHP:imagecreatetruecolor()的用法_GD库图像处理函数
  • 零息债券利息
  • php深度分析
  • vue3setup语法糖如何定义realtive数据
  • sync命令是什么意思
  • 小企业发票打印流程
  • 年底所得税怎么算
  • 试运行收入会计分录
  • 对外捐赠会计分录怎么写
  • python怎么用
  • 怎么计算多个表格的某一数据
  • 母公司给我们减工资
  • 长期待摊费用的摊销方法
  • 超过规定标准扣几分罚款
  • 未确认融资费用含税吗
  • 经营性罚款在会计中怎么处理
  • 其他权益工具投资出售时账务处理
  • 固定资产出售如何开票
  • 月末应交增值税借方余额期末该怎么处理
  • 常见的递延所得税
  • 营利性养老院都交哪些税
  • 会计从业人员信息查询
  • 动产不动产租赁增值税税率
  • mac系统怎么创建文件
  • 如何修复win7系统文件损坏
  • windows10日历没有显示农历
  • mxoaldr.exe - mxoaldr是什么进程 有什么用
  • win8无法打开ie
  • w8系统文件夹怎么设置密码
  • Win7系统打开IE提示“堆栈满溢”的多种解决方案
  • Win10 Mobile 10586正式版即将向Insider用户推送
  • win7打开软件总提示错误怎么解决
  • win8系统自带浏览器
  • cocos2dx在不同安卓机型下scrollview裁剪失败
  • js实例教程
  • 检测输入条件的各种组合
  • bat运行完后不退出
  • shell示例
  • 编写批处理
  • Node.js 中exports 和 module.exports 的区别
  • 酷狗模拟场景怎么用
  • js闭包作用问题解决应用
  • javascript parseInt 函数分析(转)
  • 如何在android studio中导入其他包
  • unity的shader用法
  • java script
  • python的params
  • 盼之代售怎么下载
  • 武汉市房产证契税 2023
  • 什么是契税发票?
  • 房屋赠与给子女要交多少税
  • 从国外买东西回来卖
  • 广东电子税务局官网登录入口手机版
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设