EventBus总结(原)】的更多相关文章

1.EventBus的作用 EventBus is a publish/subscribe event bus for Android and Java. EventBus可以被用来在各种自定义的监听事件中使用,包括不限于Activity.Fragment.Service等等等等需要进行数据传递的地方,不过应该只局限于app内部. 2.EventBus的原理 EventBus是一个典型的事件分发器,Observer模式.订阅者被集中到EventBus类中,当发布者通过post MessageEv…
一.概述 EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅.以及将发送者和接收者解耦.1.下载EventBus的类库源码:https://github.com/greenrobot/EventBus 2.基本使用 (1)自定义一个类,可以是空类,比如: public class AnyEventType { public…
用例 本文主要按照如下例子展开: //1. 新建bus对象,默认仅能在主线程上对消息进行调度 Bus bus = new Bus(); // maybe singleton //2. 新建类A(subscriber),answerAvailable()方法为事件回调,在主线程上运行 class A { public A() { bus.register(this); } // 可见性为public,仅有一个Event类型的参数 @Subscribe public void answerAvail…
上一节讲了EventBus的使用方法和实现的原理,下面说一下EventBus的Poster只对粘滞事件和invokeSubscriber()方法是怎么发送的. Subscribe流程 我们继续来看EventBus类,分析完了包含的属性,接下来我们看入口方法register() 通过查看源码我们发现,所有的register()方法,最后都会直接或者间接的调用register()方法 /** * @param subscriber 订阅者对象 * @param sticky 是否粘滞 * @para…
EventBus主要是干嘛使的,直接翻译叫事件总线. 是观察者模型的实现,利用它你既可以实现观察者模型的业务场景,还可以基于它的事件驱动机制来实现应用程序内组件之间的解耦与通信. 我们来看看有EventBus的总线结构图,如下: Rafy中的EventBus使用入口是基于上图中Composer组件组合器,使用的时候都是 通过 操作 Composer.EventBus 来控制事件的注册与发布. 所以Composer起到了桥梁的作用,通过它外界可以操作EventBus,那么EventBus是什么呢…
一.问题背景 最近离职来到了一家新的公司,原先是在乙方工作,这回到了甲方,在这一个月中,发现目前的业务很大一部分是靠轮询实现的,例如:通过轮询判断数据处于B状态了,则轮询到数据后执行某种动作,这个其实是非常浪费的,并且对于数据的实时性也会不怎么友好,基于以上的情况,在某天开车堵车时候,想到了之前偶然了解过的事件总线(EventBus),对比了公司当前的场景后,觉得事件总线应该是可以满足需求的(PS:只是我觉得这个有问题,很多人不觉得有问题),那既然想到了,那就想自己是否可以做个事件总线的轮子 二…
[https://docs.abp.io/zh-Hans/abp/latest/Distributed-Event-Bus-RabbitMQ-Integration](ABP vNext官方文档链接),基本使用可直接阅读官方文档,云怀不重复造轮子,只做官方未提到但重要的说明 关键配置说明 关键配置类:AbpRabbitMqEventBusOptions.cs 用于配置连接名.队列名即要监听的队列名.交换机名; 关键配置类:AbpRabbitMqOptions 即原始RabbitMq针对.NET的…
[原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective-C中的delegate大部分用法属于委托模式.全文有些抠概念,对实际开发没有任何影响. 前段时间看到的一篇博客iOS开发——从一道题看Delegate,和这篇博客iOS APP 架构漫谈解决的问题类似.两篇blog都写得很不错,都是为了解决两个页面之间的数据传递问题: A页面中有一个UILabel…
[原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而FMDB最新的版本中主要是通过使用FMDatabaseQueue这个类来进行多线程处理的. 2. FMDatabaseQueue使用举例 // 创建,最好放在一个单例的类中 FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath…
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:https://github.com/Tencent/tinker 首先向微信致敬,感谢毫无保留的开源出了这么一款优秀的热更新项目. 因Tinker支持Dex,资源文件及so文件的热更新,本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更…