首页 > 代码库 > EventBus的使用
EventBus的使用
Android APP当中可以用于传递消息的有广播、Intent、Handle等,使用EventBus可以取代它们的一些功能,而且使得代码非常的简明优雅。
导入EventBus的包之后,便可以使用了,使用方法如下
发送消息
Object obj = new Object()EventBus.getDefault().post(obj);
接收消息的类需要先注册,当类销毁时,要进行注销。一般接收消息都是Activity类,所以都在onCreate函数当中进行注册,在Ondestroy函数当中注销
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EventBus.getDefault().register(this);}@Overrideprotected 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的使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。