greenrobot-EventBus初探

greenrobot-EventBus初探

最近, 公司开启了一个新项目. 所以, 以前没用到的新知识, 这次也可以拿来试用一下了=.=!. 这篇博客主要是翻译一下GreenRobot官网上的EventBus的基础用法, 以及标签属性的代表含义. 本文末尾会有EventBus的官网地址以及GitHub地址.


EventBus的特征 :

  1. 简单并且功能强大.
  2. 良好的测试系统.
  3. 性能
  4. 方便的注释
  5. Android 主线程交互
  6. 后台线程交互
  7. 事件和用户传承
  8. 配置
  9. 可配置

EventBus的使用步骤 :

步骤1 : Android Studio 配置 EventBus

compile 'org.greenrobot:eventbus:3.0.0'

步骤2 : 定义事件

public class MessageEvent {    public final String message;    public MessageEvent(String message) {        this.message = message;    }}

步骤3 : 创建观察者

// This method will be called when a MessageEvent is posted (in the UI thread for Toast)// 当MessageEvent被当做参数发送的时候这个方法将会被触发.@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// 当SomeOtherEvent被当做参数发送的时候这个方法将会被触发.@Subscribepublic void handleSomethingElse(SomeOtherEvent event) {    doSomethingWith(event);}

并且在Activity或者Fragment生命周期中绑定和取消绑定监听

@Overridepublic void onStart() {    super.onStart();    EventBus.getDefault().register(this);}@Overridepublic void onStop() {    EventBus.getDefault().unregister(this);    super.onStop();}

步骤4 : 发送广播

EventBus.getDefault().post(new MessageEvent("Hello everyone!"));

大致的流程就是 : Activity/Fragment 绑定监听. –> 然后, 利用@Subscribe标签创建订阅事件. –> 最后, 利用发送广播事件的参数(MessageEvent)的不同去寻找含有对应参数的订阅方法(public void onMessageEvent(MessageEvent event))并执行.这里面对应的参数就是MessageEvent.


主要流程梳理完了, 下面我们就来看看, @Subscribe订阅标签都包含哪些内容吧.

1. @Subscribe : 默认写法, 订阅者与发布者在相同线程.
2. @Subscribe(threadMode = ThreadMode.POSTING) : 默认写法的复杂形势
3. @Subscribe(threadMode = ThreadMode.MAIN) : 订阅者将会在Android UI线程被调用.
4. @Subscribe(threadMode = ThreadMode.BACKGROUND) : 如果发布者线程不是UI线程的话, 订阅者线程将与发布者为相同线程. 如果发布者为主线程, 订阅者将会开启一个后台线程, 并加入到线程池中按顺序执行. 注 : 使用此模式的事件处理程序应尽量快速返回,以避免阻塞后台线程.
5. @Subscribe(threadMode = ThreadMode.ASYNC) : 订阅者在后台线程被调用.


EventBus 初探 就这些了, 博客写的不好, 有的地方用词会不清晰, 希望大家留言指出 ^_^!

参考文献

EventBus For Android

EventBus GitHub

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部