EventBus的使用
Posted 黄大仙爱编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EventBus的使用相关的知识,希望对你有一定的参考价值。
android APP当中可以用于传递消息的有广播、Intent、Handle等,使用EventBus可以取代它们的一些功能,而且使得代码非常的简明优雅。
导入EventBus的包之后,便可以使用了,使用方法如下
发送消息
Object obj = new Object() EventBus.getDefault().post(obj);
接收消息的类需要先注册,当类销毁时,要进行注销。一般接收消息都是Activity类,所以都在onCreate函数当中进行注册,在Ondestroy函数当中注销
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EventBus.getDefault().register(this); } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); }
接收有四个函数可供选择,他们的差异如下所示
//发布事件和接受事件在同一个线程,避免做复杂耗时的操作 public void onEvent(Object obj){ System.out.println("do something"); } //接收事件在UI线程当中执行,可以修改UI界面 public void onEventMainThread(Object obj){ System.out.println("do something"); } //如果发送事件从UI事件当中发出,则接收事件在子线程当中执行 //如果发送事件本身就是从子线程当中发出,则接收事件和发送事件在同一线程当中 public void onEventBackground(Object obj){ System.out.println("do something"); } //新建子线程接收 public void onEventAsync(Object obj){ System.out.println("do something"); }
EventBus是根据参数进行识别发送的,比如post(A a),那么接收的时候会判断参数是否是类A,如果是才会发送到这个接收函数。
EventBus是典型的观察者模式,EventBus是消息发送者,而其他注册的类属于消息订阅者。其内部会根据订阅者的接收类型进行分发。
EventBus源码地址:https://github.com/greenrobot/EventBus
以上是关于EventBus的使用的主要内容,如果未能解决你的问题,请参考以下文章