位置: 编程技术 - 正文

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

  • 服务型公司要交多少税
  • 物流公司车子保险费怎么做账
  • 预收账款属于什么科目借贷方向
  • 未入账的固定资产处理的财务处理
  • 哪些收入应该纳入到个人所得税
  • 单位承担的社保费用计入应付职工薪酬科目吗
  • 出租房屋确认收入列简易计税还是销项税
  • 个人出租商业用房
  • 什么叫销售劳务
  • 固定资产盘亏怎么算
  • 空白增值税报表在哪下载
  • 生产型企业付的消防年检费记什么科目
  • 购进商品交印花税
  • 资本金利润率多少
  • 折让方式
  • 研发支出费用化支出包括哪些
  • 外出拓展训练活动所花的费用怎么做分录?
  • 个人出租房屋应该注意什么
  • 未结转损益可以结账吗
  • 建安业核定征收利润率
  • 补贴收入需要缴纳增值税吗为什么
  • 案例分析关于团员青年的思想困惑疏导和成长问题释疑
  • 如何理解结转资金与结余资金的区别
  • 实收资本是否可以更改
  • 高新技术企业的行业
  • 公司暂估成本过高,如何处理
  • 代扣代缴的增值税可以作为进项税抵扣吗
  • 在公司预支费用怎么写单据
  • 已收到发票未认证已付款怎么做分录
  • PHP:Memcached::getMulti()的用法_Memcached类
  • 外资企业采购退税流程
  • 其他应付款怎么平账
  • 内部退养如何缴纳个人所得税
  • 海带下载
  • 有多种解决方法的问题
  • 老生常谈php中传统验证与thinkphp框架(必看篇)
  • 为什么运输合同比租赁合同风险小
  • 人力为主的公司名称
  • 申报完成后怎么处理
  • 可以主营业务成本增加现金减少吗
  • 畜牧业科技公司
  • phpcms文档
  • 织梦cms要钱吗
  • 以前年度损益调整会计分录
  • 公司活动赠送小礼品
  • 一般纳税人跨月发票怎么作废
  • 房屋租赁费需要分摊吗
  • 企业出租专利技术收取的租金不得确认为收入对吗
  • 收取子公司管理费用
  • 怎么判断其他债权债务
  • 专利代理服务费如何记账
  • 什么叫转让财产收入
  • 已抵扣的进项税额如何转出
  • 递延所得税会计处理全过程
  • 购买农副产品抵扣进项税的规定
  • 进料加工与来料加工
  • 会计需知应收账款吗
  • 建筑施工企业中,负责编制
  • 员工预支工资可以从工资里扣吗
  • 应收的货款
  • 动产不动产租赁增值税税率
  • 本年利润怎么结账
  • win8安装ie8
  • ubuntu20.0安装
  • 电脑系统怎么设置字体大小
  • windows窗口跑到了侧面
  • Win7安装VPN软件后无法上网是什么原因如何解决
  • win10系统中怎么打开IE浏览器
  • win7无线wifi
  • 卡带测评
  • opengl怎么学
  • js基于对象的特点是什么
  • android更改应用名称
  • javascript:void(0)的作用示例介绍
  • python 正则 \s
  • cocos2dx4.0入门
  • express后端
  • 某地区土拍的楼盘有哪些
  • 税务登记表格怎么填写
  • 国家税务总局中山市税务局港口税务分局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设