使用:
网址:https://github.com/greenrobot/EventBus
依赖:compile'org.greenrobot:eventbus:3.0.0'
1.普通使用
订阅:
①创建消息类
public class MessageEvent {
private String message;
public MessageEvent(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
②注册
@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); //注销
}
④获取事件
@Subscribe(threadMode = ThreadMode.MAIN)
public voidonShowMessage(MessageEvent messageEvent){//自己写方法名//开始定义的类
mTextView.setText(messageEvent.getMessage());
}
发布:
EventBus.getDefault().post(new MessageEvent("发送过来了"));//发布类中发布
2.粘性事件
获得已经发布过得粘性消息,但是只能获得最近的一次
订阅;
①注册粘性事件
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EventBus.getDefault().register(this);
}
});
②注销粘性事件
③设置获取粘性事件方法
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)//设置粘性事件为true
public void StickEvent(MessageEvent messageEvent){
mTextView.setText(messageEvent.getMessage());
}
发布:
EventBus.getDefault().postSticky(new MessageEvent("发送粘性事件"));//发送粘性事件
3.四种线程
①
@Subscribe(threadMode = ThreadMode.POSTING) //哪个线程发,哪个线程接
②
@Subscribe(threadMode = ThreadMode.MAIN) //主线程接
③
@Subscribe(threadMode = ThreadMode.BACKGROUND) //子线程接
④
@Subscribe(threadMode = ThreadMode.ASYNC)//重新开线程接