EventBus—如何优雅的开始使用(官翻一)

写在前边:虽说翻译虽好,但是还是一手资料比较好,有些翻译还是不到位。

如何优雅的使用EventBus ,3步走。

EventBus API as easy as 1-2-3
我们开始使用EventBus之前去顶添加了EventBus依赖包。

第1步:定义事件(Define events)

定义的事件实际上就是个不带任何特定要求的POJO类(plain old Java object),也就是JAVABEAN对象。

public class MessageEvent {

    public final String message;

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

第2步:准备订阅者(Prepare subscribers)

订阅者,实现事件分发的方法,把它方法叫做(订阅方法) ,当时间被发送后相应的订阅方法被调用,这些订阅方法使用了@Subscribe 标注注解。值得注意的是,使用EventBus 3的订阅者的方法名称是可以自由命名的(EventsBus2是不允许自己命名的)


// This method will be called when a MessageEvent is posted (in //the UI thread for Toast)
//当MessageEvent这个pojo被发出后,这个方法将被调用,即在UI中吐司提示。
@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
// 处理SomOtherEvent 这个事件的方法。
@Subscribe
public void handleSomethingElse(SomeOtherEvent event) {
    doSomethingWith(event);
}

当然了,订阅者(Subscribers )自己也需要在bus中去注册(register)和解除使用(unregister)。仅当订阅者被注册以后,他们才能接受到Event,才能被使用。在安卓中,Activity和Fragments 你应该通常根据他们生命周期来进行注册,一般的就在OnStart或者OnStop方法里边就行:

@Override
public void onStart() {
    super.onStart();
    EventBus.getDefault().register(this);
}

@Override
public void onStop() {
    EventBus.getDefault().unregister(this);
    super.onStop();
}

第3步:发布事件(Post events)

从代码的任何部分都可以发布事件(比如说,你在按钮点击的方法里边写,或者在请求网络的代码中写)。 与事件类型匹配的所有当前注册订阅者都将收到。发布事件的代码:

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

以上这3步看起来很简单,其实官方资料也是比较通俗易懂的,直接大白话翻译出来就行了。

猜你喜欢

转载自blog.csdn.net/shaoduo/article/details/75212672