参考网址:http://greenrobot.org/eventbus/
引入EventBus:
compile 'org.greenrobot:eventbus:3.0.0'
1.快速入门
step1:定义事件
public class MessageEvent {
public final String message;
public MessageEvent(String message) {
this.message = message;
}
}
step2:接收并处理事件
相应生命周期方法中注册和解注册
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
定义处理事件方法
// This method will be called when a MessageEvent is posted (in the UI thread for Toast)
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {
Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();
}
// This method will be called when a SomeOtherEvent is posted
@Subscribe
public void handleSomethingElse(SomeOtherEvent event) {
doSomethingWith(event);
}
step3:发送事件
EventBus.getDefault().post(new MessageEvent("Hello everyone!"));
2.定义不同线程中处理事件
@Subscribe(threadMode = ThreadMode.POSTING) // 和发布者在同一个线程,默认的
public void onMessage(MessageEvent event) {
log(event.message);
}
// UI线程处理
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessage(MessageEvent event) {
textField.setText(event.message);
}
// 后台线程处理
@Subscribe(threadMode = ThreadMode.BACKGROUND)
public void onMessage(MessageEvent event){
saveToDisk(event.message);
}
// 单独的一个线程 线程池机制
@Subscribe(threadMode = ThreadMode.ASYNC)
public void onMessage(MessageEvent event){
backend.send(event.message);
}
3.Sticky Events 粘性事件
使用场景:例如想要在Activity初始化前发送事件在Activity启动后执行
发送一个粘性事件:EventBus.getDefault().postSticky(new MessageEvent("Hello everyone!"));
处理接收
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onEvent(MessageEvent event) {
// UI updates must run on MainThread
textField.setText(event.message);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
获取或销毁粘性对象
MessageEvent stickyEvent = EventBus.getDefault().getStickyEvent(MessageEvent.class);
// Better check that an event was actually posted before
if(stickyEvent != null) {
// "Consume" the sticky event
EventBus.getDefault().removeStickyEvent(stickyEvent);
// Now do something with it
}
4.优先级
默认优先级是0 优先级越高先执行 不过不能影响不同线程之间的接收
@Subscribe(priority = 1);
public void onEvent(MessageEvent event) {
…
}
可以在高优先级截断低优先级的处理
@Subscribe
public void onEvent(MessageEvent event){
// Process the event
…
EventBus.getDefault().cancelEventDelivery(event) ;
}
5.混淆
-keepattributes *Annotation*
-keepclassmembers class ** {
@org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
<init>(java.lang.Throwable);
}
相关推荐
EventBus 是一个轻量级的事件总线库,它用于 Android 应用程序中的组件间解耦通信。在 Android 开发中,它提供了一种替代传统回调或接口传递消息的方法,使得不同组件间的通信变得更加简单和灵活。EventBus 3.0 版本...
**Node.js-Eventbus3.0简单使用适合初学者使用** 在Node.js开发过程中,有时候我们需要在不同的模块之间传递事件,实现解耦合和高效通信。这就是EventBus(事件总线)的概念,它模仿了Android中的EventBus库,提供...
在本文中,我们将深入探讨如何在SpringBoot应用中使用EventBus,这是一个基于Guava库的事件总线系统。EventBus的引入使得松耦合的组件间通信变得更加简单和高效。让我们一起通过步骤来理解这个“SpringBoot+EventBus...
在Android开发中,EventBus是一个轻量级的事件发布/订阅框架,它简化了应用程序组件之间的通信。相较于传统的BroadcastReceiver,EventBus提供了更加灵活、高效和低耦合的事件传递方式。本文将深入探讨如何使用...
在这种情况下,`EventBus`作为一个轻量级的发布/订阅事件总线,可以作为Intent的一个有效替代方案,特别是在处理复杂数据结构和跨组件通信时。 `EventBus`由GreenRobot团队开发,它简化了Android组件间的通信,使得...
**EventBus 概述** EventBus 是一个发布/订阅事件总线库,它简化了 Android 应用程序内的组件通信。传统的组件间通信方式,如使用 Handler 或接口回调,往往导致代码复杂度增加,可维护性降低。EventBus 的引入为...
EventBus 是一个流行的 Android 库,它简化了应用程序中的事件发布和订阅机制。这个库是由 GreenRobot 开发的,旨在替代传统的回调或者广播接收器,为开发者提供了一种更轻量级、更灵活的方式来处理组件间的通信。...
EventBus 是一个流行的消息总线库,用于简化 Android 应用中的组件通信。它通过发布/订阅模式使得组件之间的交互更加灵活,降低了组件间的耦合度。在 Android 框架之路系列教程中,我们将会深入探讨如何有效地使用 ...
**EventBus详解** EventBus是一款轻量级的事件总线库,它简化了Android应用中的组件间通信。在传统的Android开发中,我们通常使用接口回调、BroadcastReceiver或静态内部类来实现组件间的通信,但这些方式往往使得...
EventBus 是一个轻量级的事件总线库,它在Android开发中被广泛使用,用于组件之间的解耦通信。这个库使得应用程序中的不同组件(如Activity、Fragment、Service等)可以方便地通过发布和订阅事件来进行通信,而无需...
EventBus 是一个轻量级的事件总线库,它简化了 Android 应用中的组件通信。这个库由 Greenrobot 开发,它通过发布/订阅模式让组件之间能够解耦合地进行通信,避免了大量的回调函数或者冗余的接口实现。在 "EventBus...
EventBus 是一个流行的消息总线库,专门为 Android 平台设计,用于简化应用程序中的事件通信。这个库由 Greenrobot 开发,它提供了一个发布/订阅模式的事件传递机制,使得组件之间的解耦变得简单而高效。标题中的 ...
EventBus 是一个轻量级的事件总线库,它简化了Android应用内的组件通信。在Android开发中,组件之间的通信通常依赖于回调、接口或者Intent等机制,但这些方式有时会变得复杂,尤其是在多模块、多层级交互时。...
**EventBus 3 使用记录与实战** EventBus 是 Android 开发中一个轻量级的发布/订阅事件总线,它简化了组件之间的通信,避免了因过度依赖于 Activity 和 Fragment 的回调导致的复杂性。本篇文章将深入探讨 EventBus ...
EventBus 是一个流行于 Android 开发中的发布/订阅事件总线库,由 GreenRobot 团队开发。这个库简化了组件间的通信,使得应用程序的组件(如 Activities, Fragments, Services)无需直接耦合就可以相互通信。在 ...
EventBus 是一个 Android 开发中的轻量级事件总线库,它简化了应用程序组件之间的通信。这个"EventBus相关小案例"可能包含了如何在实际项目中应用 EventBus 的示例代码。下面,我们将深入探讨 EventBus 的核心概念、...
在软件开发中,事件总线(EventBus)是一种设计模式,用于在组件之间解耦通信,使得各个组件可以独立地发布和订阅事件,而无需直接引用对方。C#作为.NET框架的主要编程语言,同样支持实现事件总线的概念。下面将详细...
EventBus 是一个在 Android 开发中广泛使用的发布/订阅事件总线库,它简化了组件间的通信,替代了传统的基于回调或意图(Intent)的通信方式。EventBus 3.0 版本是其稳定且功能强大的一个版本,提供了一些优化和改进...
参考文档:电梯直达 EventBusUtils //订阅者回调签名 typedef void EventCallback(arg);... static EventBus _singleton = new EventBus._internal(); /// 工厂构造函数 factory EventBus() => _singleton; /// 保
EventBus 是一个在Android开发中广泛使用的发布/订阅事件总线库,它简化了应用程序中组件之间的通信。这个“EventBus的简单demo”应该包含了一个简单的示例,演示了如何在Android项目中集成并使用EventBus来传递数据...