当前位置: 首页 > wzjs >正文

备案网站域名和主机关系桂林市内旅游必去景点

备案网站域名和主机关系,桂林市内旅游必去景点,模板建站总公司,h5购物网站模板一,概述 EventBus即事件总线,在软件架构设计中,采用事件-发布-订阅类架构,通常具备高内聚低耦合特性,相对比通过Android#Broadcast方式,此框架由于不涉及跨进程方式,效率更加高效,并…

一,概述

EventBus即事件总线,在软件架构设计中,采用事件-发布-订阅类架构,通常具备高内聚低耦合特性,相对比通过Android#Broadcast方式,此框架由于不涉及跨进程方式,效率更加高效,并且提供了类似注解订阅方式,EventBus全局访问,不会被局限context组件。

笔者理解,这就是解耦框架,将不关联模块解耦,只通过总线方式通线,在企业级架构设计中,EventBus被经常使用。

二,实例

依赖

implementation "org.greenrobot:eventbus:3.3.1"

获取EventBus实例通常由默认方法getDefault,

或者通过build定制化参数获得,比如可以在build中添加SubscriberInfoIndex接口,自定义订阅方法,这就无需依赖Subscribe注解,

并且重写getSubscriberInfo方法即可

但笔者仍推荐Subscribe注解,但如果一个类中方法特别多,反射多方法存在性能开销,可以考虑index方式快速找到方法,

三,源码

1,register

1,通过subscriberFinder找到订阅方法,核心就在于怎么找,要么通过注解,要么通过index接口

2,对单个实例订阅该方法,订阅事件即方法参数

跟进findSubscribeMethods

1,从缓存查找,命中即返回

2,如果build参数ignoreGeneratedIndex为true,则直接通过反射查找,否则可以尝试index接口

3,index接口超找订阅方法

4,缓存

跟进findUsingInfo方法,

1,通过getSubscriberInfo找到SubscribeInfo,

2,如果没有index接口,则通过反射查找

跟进findUsingReflectionInSingleClass

1,反射所有声明方法

3,找到Subscribe注解方法

4,创建SubscribeMethod实体,保存此方法

最后,根据这个findState返回method

再将FindState放进对象池中,此处是享元模式设计,减少FindState创建数量

2,post

sticky粘性事件,sticky区分状态或事件,事件存在实时性,而状态存在唯一性,因此,状态一般是粘性,而事件则是非粘性,

在register中,通过订阅方法的sticky字段,决定是否将stickEvents中事件发布给订阅者,

stickyEvents需要显示添加,否则普通post仅是普通事件,无法加入stickyEvents Map

直接看post源码

1,从ThreadLocal中获得PostingThredState,其isPosing表示是否正在发送事件

当isPosing为false,则通过eventQueue出队消费事件,

跟进postSingleEvent

上述,存在可继承性事件判断,这在构造EventBus中设置,如下,

跟进postSingleEventForEventType

通过subscriptionEventType通过event快速获得订阅者,

这行map在register的subscribe中添加

跟进postToSubscription发布时间到subscription

根据线程模型,选择策略

POSTING:当前线程

MAIN:当前是主线程直接触发,或者加入主线程队列

MAIN_OROERED:加入主线程队列

BACKGROUND:子线程

ASYNC:反正异步,也是一个子线程

跟进invokeSubscribert

这就很简单了,method#invoke传入event即可,通知到订阅者

四,注意

避免内存泄漏,对于存在生命周期的对象,或需要销毁的对象,及时调用EventBus#unregister方法反注册,不然将作为Subscription#subscriber对象存在EventBus引用中。

http://www.dtcms.com/wzjs/546165.html

相关文章:

  • 网上商城网站怎么做wordpress 微信主题
  • 深圳整站做网站是怎样赚钱
  • 商业图片素材网站网站运营培训机构
  • 上海 顶尖 网站设计新营销方式有哪些
  • No酒类网站建设深圳网站建设微赢天下
  • 怎么做淘宝客导购网站推广德州seo整站优化
  • 物流网站建设策划书的总结专业建站团队
  • 搜索引擎网站推广定义做冰饮视频网站
  • 网站开发实习计划模板品牌策划设计
  • 阿里网站制作需要多少钱网站建设如何接单
  • 做网站可以在哪儿接活免费搭建商业网站
  • 传统文化网站设计广东平台网站建设
  • 校园网站建设工作计划浏览器下载免费安装
  • wordpress网站迁移问题注册咨询服务公司有什么要求
  • 广安网站seo南宁学做网站
  • se 网站优化没网站怎么做京东联盟
  • 网站建设公司业务培训wordpress菜单不兼容
  • 网站代理如何做如何形容一个网站做的好
  • 哪个网站生鲜配送做的好wordpress推荐编辑器
  • 深圳建设网站的公司简介医院设计机构
  • 厦门外贸网站seo天水网站开发
  • 怎么做网站代销亚马逊站外推广怎么做
  • 哪里有配音的网站学做网站需要多长时间
  • 做网站为什么不要源代码长春建设信息网站
  • 北京网站制作与建设公司网站排名站长之家
  • 网站前期准备网站开发 -(广告)
  • ps中怎样做网站轮播图片广州建设银行投诉网站
  • 做信息网站的盈利方式有哪些国家信用企业信息系统
  • 如何做点击赚钱的网站建站宝盒站群版
  • 问答系统网站模板郑州网站建设喝彩