EventBus简介:
EventBus是用于Android事件发布-订阅总线。它简化了各个组件之间进行通信的复杂度,尤其是碎片之间进行通信的问题,可以避免由于使用广播通信带来的诸多不便。
使用步骤
- 注册 在initData()方法里面写,EventBus.getDefault().register(MainActivity.this);
- 解注册 在Activity的onDestroy() 写,EventBus.getDefault().unregister(MainActivity.this);此方法是为了释放内存。
- 构造发送消息类 写一个构造方法
public class MessageEvent { public String name; public MessageEvent(String name) { this.name = name; } }
- 发送消息:EventBus.getDefault().post(new MessageEvent(“主线程发送过来的消息”));
- 接收消息:
@Subscribe(threadMode=ThreadMode.MAIN) //在主线程中执行 public void MessageEventBus(MessageEvent event){ //MessageEvent必须是构造发送消息类(的名称) 要加注解 tv_eventbus_result.setText(event.name); }
其中接收消息里面有四种模式:
ThreadMode.MAIN表示这方法在主线程中执行。
ThreadMode.BACKGROUND该方法表示在后台执行,不能并发执行;
ThreadMode.SYNC也是表示在后台执行,但是可以并发执行;
ThreadMode.POSTING该方法和消息发送方在同一个线程中执行。
发送粘性事件
1、构造发送消息类
2、发送消息
3、接收消息
4、注册
5、解注册