EventBus 3.0 的基本使用

1.什么是EventBus?

EventBus 是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。比如请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过EventBus实现。

2.使用EventBus有什么好处?

采用消息发布/订阅的一个很大的优点就是代码的简洁性,并且能够有效地降低消息发布者和订阅者之间的耦合度。

3.EventBus 3.0 的使用

  1. 在 AndroidStudio中添加依赖:
    compile ‘org.greenrobot:eventbus:3.0.0’

2.注册和注销

你需要在一个Activity或者Fragment中注册eventbus事件,然后定义接收方法,这和Android的广播机制很像,你需要首先注册广播,然后需要编写内部类,实现接收广播,然后操作UI,在EventBus中,你同样需要这么做。比如:

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

3.定义事件

Event 大专栏  EventBus 3.0 的基本使用s 就是一个普通的JavaBean,没有任何特殊要求,例如:

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

4.订阅者

准备subcriber的回调method,来处理post event,从EventBus 3.0 开始,用注解@Subscribe来定义subscriber的回调method,方法名可以任意定义。
例如:

@Subscribe(threadMode = ThreadMode.POSTING)
public void onMessageEvent(MessageEvent event) {
Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();
}

在这个方法上面添加 @Subscribe 注解,同时这里可以添加threadMode参数决定onMessageEventBus方法执行在什么线程上面,这里的参数分为:

  • POSTING –与消息发送者在同一线程(默认)

  • MAIN –执行在主线程

  • BACKGROUND –执行在一个后台线程,会优先寻找发送者的线程,如果发送者执行在主线程,那么就新建一个后台线程

  • ASYNC –执行在一个新的后台线程中

5.发布者

前面准备好,这里就可以任意post event。所有已注册EventBus的subscriber只要event_type相匹配,都可以收到该event。

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

使用篇就到这里,之后会继续写原理分析。

最新文章

  1. Python Iterable Iterator Yield
  2. pod install后无反应
  3. perspective属性
  4. dll 打包
  5. SQL Server 2008空间数据应用系列一:空间信息基础
  6. Java RMI 入门案例
  7. utf8_general_ci 、utf8_general_cs和utf8_bin的区别
  8. Python学习笔记——基础篇【第五周】——正则表达式(re)
  9. JDBC连接SQL Server 2005步骤详解
  10. C#继承的执行顺序
  11. 为 Debian 8 或 Debian 9(64 位)安装 .NET Core
  12. PHP截取日期
  13. 跨平台移动APP开发进阶(三)hbuilder+mui mobile app 开发心酸路
  14. python 单例模式的四种实现方法及注意事项
  15. Oracle时间与系统不同步,TimeStampService
  16. March 02nd, 2018 Week 9th Friday
  17. javascript 回调函数定义 模板
  18. Java并发之线程转储
  19. git排错
  20. GsonFormat的使用 (转)

热门文章

  1. Django框架(八):视图(一) URLconf、视图
  2. tensorflow输入数据处理
  3. 1027A. Palindromic Twist#变形回文串
  4. 2.docker machine 创建 包含 docker 的 linux 虚拟机
  5. 查看opencv-python编译信息
  6. 迅为-IMX6开发板Android Eclipse 导入Led应用程序工程
  7. PyTorch基础——迁移学习
  8. 使用sshfs
  9. IOC&AOP
  10. jetbrains系列产品 永久注册方法