eventbus使用

ABP框架 - 领域事件(EventBus)

隐身守侯 提交于 2020-01-01 18:37:07
文档目录 本节内容: EventBus 注入 IEventBus 获取默认实例 定义事件 预定义事件 处理完异常 实体修改 触发事件 处理事件 处理基类事件 处理程序异常 处理多个事件 处理程序注册 自动 手动 反注册 在C#里,一个类可以定义自己的事件,然后其它类可以注册它,当某些事情发生时,接收到通知。这对于桌面应用或单机的Windows服务非常有用。但是,对于一个Web应用,它就有点问题,因为对象在一个web请求里创建,并且它们生命周期都很短。所以就难于注册一些类事件,同时,直接注册另一个类的事件,也使得类之间更加藕合。 领域事件一般用来解藕业务逻辑和在应用里发生重要领域修改时发出通知。 EventBus EventBus是一个单例对象,被所有类触发事件或处理事件时共享。为使用事件总线,你先要引用它,有两种方式。 注入 IEventBus 你可以用 依赖注入 获取一个IEventBus的引用,这儿我们使用属性注入模式: public class TaskAppService : ApplicationService { public IEventBus EventBus { get; set; } public TaskAppService() { EventBus = NullEventBus.Instance; } } 在注入事件总线上,属性注入比构造器注入更合适

EventBus(一) 简单使用,不使用反射,使用注解处理器

送分小仙女□ 提交于 2019-12-30 22:50:06
导入依赖 // 依赖第三方库:EventBus implementation 'org.greenrobot:eventbus:3.1.1' annotationProcessor 'org.greenrobot:eventbus-annotation-processor:3.1.1' 给EventBus注解处理器传参 // 给注解处理器传参 javaCompileOptions { annotationProcessorOptions { arguments = [ eventBusIndex : 'com.netease.eventbus.demo.MyEventBusIndex' ] } } Application中初始化 /** * http://greenrobot.org/eventbus/documentation/subscriber-index/ */ public class BaseApplication extends Application { @Override public void onCreate() { super.onCreate(); EventBus.builder().addIndex(new MyEventBusIndex()).installDefaultEventBus(); } } 注册 public class

Guava - EventBus(事件总线)

隐身守侯 提交于 2019-12-30 09:00:03
Guava在 guava-libraries 中为我们提供了事件总线EventBus库,它是事件发布订阅模式的实现,让我们能在领域驱动设计(DDD)中以事件的弱引用本质对我们的模块和领域边界很好的解耦设计。 不再多的废话,直奔Guava EventBus主题。首先Guava为我们提供了同步事件EventBus和异步实现AsyncEventBus两个事件总线,他们都不是单例的,官方理由是并不想我们我们的使用方式。当然如果我们想其为单例,我们可以很容易封装它,一个单例模式保证只创建一个实例就对了。 下面将以EventBus为例,AsyncEventBus使用方式与其一致的。 订阅 首先EventBus为我们提供了register方法来订阅事件,Guava在这里的实现很友好,我们不需要实现任何的额外接口或者base类,只需要在订阅方法上标注上 @Subscribe 和保证 只有一个输入参数 的方法就可以搞定。这样对于简单的某些事件,我们甚至可以直接 new Object() { @Subscribe public void lister(Integer integer) { System.out.printf("%d from int%n", integer); } } Guava发布的事件默认不会处理线程安全的,但我们可以标注@AllowConcurrentEvents来保证其线程安全

EventBus 事件总线 案例

血红的双手。 提交于 2019-12-30 08:59:40
简介 地址:https://github.com/greenrobot/EventBusEventBus是一个【发布 / 订阅】的事件总线。简单点说,就是两人【约定】好怎么通信,一人发布消息,另外一个约定好的人立马接收到你发的消息。EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息。优点:开销小,代码更优雅,将发送者和接收者解耦。 用处:相信大家都用过【Handle】了进行线程通信,回调方法进行通信,是不是觉得特麻烦。EventBus就可以帮减少很多事,不管你在【任何地方】发布一个事件,接收者都能立马接收到你的消息,不用你考虑android【子线程操作UI线程】的问题! EvenBus简化了应用程序内【各组件间】、【组件与后台线程间】的通信。它的效果和Handler的效果大致相同,但是实现原理和使用方法是完全不同的,它是基于【保存】相应方法,然后通过【反射】机制来实现的。 包含4个成分:发布者,订阅者,事件,总线。 关系 :订阅者订阅事件到总线,发送者发布事件; 订阅者可以订阅多个事件,发送者可以发布任何事件,发布者同时也可以是订阅者。 注册订阅者: EventBus.getDefault().register(this);

事件总线EventBus

纵饮孤独 提交于 2019-12-30 08:59:16
什么是事件总线管理? 将事件放到队列里,用于管理和分发; 保证应用的各个部分之间高效的通信及数据,事件分发; 模块间解耦; 什么是EventBus? EventBus是发布/订阅的事件总线。EventBus模式-也被称为MessageBus或者发布者/订阅者(publisher/subcriber)模式——可以让两个组件相互通信,但是他们之间并不相互知晓。 基于事件总线管理/订阅/分发模式的。事件响应有更多的线程选择,EventBus可以向不同的线程中发布事件。EventBus支持Sticky Event。 使用时需要先注册订阅,然后向订阅者分发消息数据即可。包含4个成分:发布者,订阅者,事件,总线。订阅者可以订阅多个事件,发布者可以发布任何事件,发布者同时可以也是订阅者。分订阅、注册、发布、取消注册等步骤。 如下图: EventBus.getDefault().register(this); //注册事件 EventBus.getDefault().post(object); //发送事件 EventBus.getDefault().unregister(this); //取消事件 //订阅处理事件的方法和区别 //UI线程执行 public void onEventMainThread() {} //当前发布事件的线程执行 public void

Android EventBus的使用

旧城冷巷雨未停 提交于 2019-12-27 03:42:36
这个其实和Intent传值差不多,但我们用Intent传值的时候消耗非常大,这个消耗就非常小了,我们可以看到, 手机页面都没有看到Activity的切换,也没有闪动; 首先需要导入依赖 compile 'org.greenrobot:eventbus:3.0.0' 先来介绍普通的事件(这个就类似我么的startActivityForResult()) 然后就是写代码了,首先是要注册: EventBus.getDefault().register(MainActivity.this); 然后就是我们要启动的Activity Intent intent = new Intent(getApplicationContext(), JIeshou.class); startActivity(intent); 然后就是我们要发送的东西,要在我们要发送的Activity中写: EventBus.getDefault().post(new AnyEventType("接受到了")); finish(); 然后我们又要在MainActivity中接受了: @Subscribe(threadMode = ThreadMode.MAIN) public void userEventBus(AnyEventType userEvent){ tv.setText(userEvent.getmMsg());

android EventBus 的使用

一笑奈何 提交于 2019-12-27 03:42:19
今天简单的介绍 一下啊 android EventBus 的使用 EventBus 在官方介绍中是订阅......什么的 一大堆 , 在我android 菜鸟眼里 就是用来代替android 广播的 简单粗暴 效率高; 其实用法挺简单 的 就 三步 注册(官方叫订阅) 接收 取消(取消订阅). 算了 不多说直接上代码 ; 如果你用的是 android studio 直接在build.gradle 里添加 : compile files('libs/EventBus2.4.jar') 这个基础的就不做 过多解释了 网上 jar 类库什么的一大堆下面是使用:首先是发送数据 EventBus.getDefault().post(event);//这个在项目哪里都可以发的 event 参数等下讲接收: EventBus.getDefault().register(this);//接收之前是要先注册的 否则不会触发 onEventMainThread 也就是收不到发的event 你可以写在onCreate()等初始化方法里 public void onEventMainThread(Event event) {//接收方法(这是低版本固定格式后面介绍高版本使用)//event 可以是任意类型 只能一个参数 建议封装一下扩展性强一点 下//就把这里当做广播接收的地方用吧 更新ui 获取数据..

EventBus使用详解(二)——EventBus使用进阶

旧街凉风 提交于 2019-12-25 18:27:16
前言:这段时间感觉自己也有点懒了,真是内心有点自责呢,除了工作,也没做点什么,EventBus也是一周前总结出来的,只能以写博客为名来弥补内心的罪恶感了,集合同事们做的项目,虽然上周开动了,但总感觉大家积极性不高,如何才能做一个合格的管理者,还真是一个考验。follow your heart!! just do it! 相关文章: 1、 《EventBus使用详解(一)——初步使用EventBus》 2、 《EventBus使用详解(二)——EventBus使用进阶》 一、概述 前一篇给大家装简单演示了EventBus的onEventMainThread()函数的接收,其实EventBus还有另外有个不同的函数,他们分别是: 1、onEvent 2、onEventMainThread 3、onEventBackgroundThread 4、onEventAsync 这四种订阅函数都是使用onEvent开头的,它们的功能稍有不同,在介绍不同之前先介绍两个概念: 告知观察者事件发生时通过EventBus.post函数实现,这个过程叫做事件的发布,观察者被告知事件发生叫做事件的接收,是通过下面的订阅函数实现的。 onEvent: 如果使用onEvent作为订阅函数,那么该事件在哪个线程发布出来的,onEvent就会在这个线程中运行,也就是说发布事件和接收事件线程在同一个线程

Android EventBus 3.0.0 使用总结

萝らか妹 提交于 2019-12-18 02:22:53
转载请标明出处:http://www.cnblogs.com/zhaoyanjun/p/6039221.html 本文出自 【赵彦军的博客】 前言 EventBus框架 EventBus是一个通用的叫法,例如Google出品的Guava,Guava是一个庞大的库,EventBus只是它附带的一个小功能,因此实际项目中使用并不多。用的最多的是greenrobot/EventBus,这个库的优点是接口简洁,集成方便,但是限定了方法名,不支持注解。另一个库square/otto修改自 Guava ,用的人也不少。所以今天我们研究的目标是greenrobot的EventBus. EventBus 简介 1、EventBus3.0.0 是最新的版本。 2、EventBus 是Android 发布/订阅事件总线,可简化 Activities, Fragments, Threads, Services 等组件间的消息传递。 3、可替代 Intent, Handler, BroadCast ,接口等传统方案,更快,代码更小,50K 左右的 jar 包,代码更优雅,彻底解耦。 github地址:https://github.com/greenrobot/EventBus EventBus原理图 如何添加依赖 在module的build.gredle 文件中的dependencies标签中添加

004-行为型-03-观察者模式(Observer)

99封情书 提交于 2019-12-17 20:25:54
一、概述   当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。   定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有依赖者(观察者)都会收到通知并更新。   Observer模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步。 1.1、适用场景   一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。   关联行为场景,建立一套触发机制 典型应用   1、侦听事件驱动程序设计中的外部事件   2、侦听/监视某个对象的状态变化   3、发布者/订阅者(publisher/subscriber)模型中,当一个外部事件(新的产品,消息的出现等等)被触发时,通知邮件列表中的订阅者 1.2、优缺点 优点: 观察者和被观察者之间建立一个抽象的耦合 观察者模式支持广播通信,建立一套触发机制。 缺点: 观察者之间有过多的细节依赖、提高时间消耗及程序复杂度 使用要得当,要避免循环调用 1.3、类图角色及其职责      1、Subject(被观察者)   被观察的对象。当需要被观察的状态发生变化时,需要通知队列中所有观察者对象。Subject需要维持(添加,删除,通知)一个观察者对象的队列列表。    2