android EventBus总结

EventBus定义:

EventBus是一个基于观察者模式的事件发布/订阅框架,开发者通过极少的代码去实现多个模块之间的通信,而不需要以层层传递接口的形式去单独构建通信桥梁。从而降低因多重回调导致的模块间强耦合,同时避免产生大量内部类。拥有使用方便,性能高,接入成本低,支持多线程的优点。

如何实现Eventbus

1.定义事件(事件是POJO(plain old java object)类型,不需要什么特别的需求)

public class MessageEvent {

public final String message;

public MessageEvent(String message) {

  this.message = message;

}

2.准备订阅者(订阅者实现事件处理方法(也叫做订阅者方法),这个方法会在事件提交的时候被调用。这些是使用@Subscribe注解定义的。请注意EventBus 3的方法名字可以自由选择(不像EventBus 2中约束的那样)。)

// 当一个Message Event提交的时候这个方法会被调用

@Subscribe

public void onMessageEvent(MessageEvent event){

    Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();

}

// 当一个SomeOtherEvent被提交的时候这个方法被调用。

@Subscribe

public void handleSomethingElse(SomeOtherEvent event){

    doSomethingWith(event);

}

订阅者也需要在bus中注册和注销。只有在订阅者注册的时候,他们才会收到事件。在Android中,Activities和Fragments通常绑定他们的生命周期.

@Override

public void onStart() {

    super.onStart();

    EventBus.getDefault().register(this);

}

@Override

public void onStop() {

  EventBus.getDefault().unregister(this);

    super.onStop();

}

3.提交事件(在代码中任意位置提交事件。所有当前注册的匹配事件类型的订阅者都会收到事件。)

EventBus.getDefault().post(newMessageEvent("Hello everyone!"));

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容