美文网首页
简单了解EventBus

简单了解EventBus

作者: 被时光移动的城 | 来源:发表于2018-03-08 08:14 被阅读5次

本文基于EventBus3.0,本文仅是一篇笔记,如有不对或不足之处,请直接批评指出。

官方参考链接:https://github.com/greenrobot/EventBus
其他参考链接:http://blog.csdn.net/ljd2038/article/details/50866294(文中部分内容摘自此链接)

一、EventBus的使用只需三步

首先我们需要将EventBus添加到我们的项目中。在AndroidStudio中我们可以在moudle的gradle里面直接配置即可。

compile 'org.greenrobot:eventbus:3.0.0'

1.定义events

public static class MessageEvent { /* Additional fields if needed */ }

2.选择指定的线程模式,声明订阅的方法

@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {/* Do something */};

绑定和解绑,Android中通常根据生命周期进行绑定和解绑

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EventBus.getDefault().register(this);
}
@Override
public void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}

3.发送事件

EventBus.getDefault().post(new MessageEvent());

二、EventBus的四种ThreadMode

1、 ThreadMode: POSTING

哪个线程发布,订阅者就在哪个线程中执行
这个也是EventBus默认的线程模式,由于没有线程的切换,也就意味消耗的资源也是最小的。如果一个任务不需要多线程的,也是推荐使用这种ThreadMode的。

@Subscribe(threadMode = ThreadMode.POSTING)

2、 ThreadMode: MAIN

主线程中运行,这里就不能执行一些耗时的任务

@Subscribe(threadMode = ThreadMode.MAIN)

3、 ThreadMode: BACKGROUND

在后台线程中执行
如果发布者是在主线程中进行的事件发布,那么订阅者将会重新开启一个子线程运行,若是发布者在不是在主线程中进行的事件发布,那么这时候订阅者就在发布者所在的线程中执行任务。

@Subscribe(threadMode = ThreadMode.BACKGROUND)

4、 ThreadMode: ASYNC

在独立的线程中执行
不管发布者是在主线程还是在子线程中进行事件的发布,订阅者都是在重新开启一个线程来执行任务。

@Subscribe(threadMode = ThreadMode.ASYNC)

三、优先级和事件取消

在订阅者中我们可以设置优先级,优先级高的将会首先接收到发布者所发布的事件,并且我们还能在高优先级中取消事件,这时低优先级的订阅者将接收不到事件。这类似于BroadcastReceiver中的取消广播。不过这里有一点我们要注意,对于订阅者的优先级只是针对于相同的ThreadMode中。默认的优先级为0。

四、ProGuard代码混淆

ProGuard的配置文件中添加如下代码

-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

    本文基于EventBus3.0,本文仅是一篇笔记,如有不对或不足之处,请直接批评指出。 官方参考链接:https:...

  • EventBus简单分析

    EventBus eventbus源码比较简单 EventBusAnnotationProcessor Abs...

  • EventBus3.0 深入了解

    通过上一篇文章《EventBus 3.0相见恨晚》对EventBus3.0的原理及使用方法有了简单了解。 下面就其...

  • 自定义消息订阅框架NotificationBus

    1.概述 看过我之前关于EventBus 讲解的文章《EventBus原理与源码解析》,可以了解到EventBus...

  • EventBus的使用和理解

    为什么要使用EventBus?或者说使用EventBus有什么好处? 让我们带着问题去了解和使用EventBus。...

  • 自定义简易EventBus

    本章通过自定义一个简易的EventBus来了解EventBus的框架思路; EventBus的设计思路是通过向内存...

  • [了解点皮毛] EventBus的简单使用

    定义事件类型 使用步骤说明 注册(一般使用在Activity和Fragment) 销毁(一般使用在Activity...

  • EventBus源码解析(一)

    上一篇我们介绍了EventBus的简单使用,但是对于一个库,不能简单的会用就行,我们得了解里面的原理。 问题 看源...

  • Android EventBus源码分析

    一、先看看EventBus的简单使用 1. 导入eventbus 2. MainActivity 3. Commo...

  • EventBus3.0使用(一)

    3Steps简单使用EventBus3.0 在使用EventBus 先在Gradle 添加依赖 定义Event事件...

网友评论

      本文标题:简单了解EventBus

      本文链接:https://www.haomeiwen.com/subject/fmnsfftx.html