使用:
網(wǎng)址:https://github.com/greenrobot/EventBus
依賴:compile'org.greenrobot:eventbus:3.0.0'
1.普通使用
訂閱:
①創(chuàng)建消息類
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());
}
發(fā)布:
EventBus.getDefault().post(new MessageEvent("發(fā)送過來了"));//發(fā)布類中發(fā)布
2.粘性事件
獲得已經(jīng)發(fā)布過得粘性消息,但是只能獲得最近的一次
訂閱;
①注冊粘性事件
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());
}
發(fā)布:
EventBus.getDefault().postSticky(new?MessageEvent("發(fā)送粘性事件"));//發(fā)送粘性事件
3.四種線程
①
@Subscribe(threadMode?=?ThreadMode.POSTING) ? ? //哪個線程發(fā),哪個線程接
②
@Subscribe(threadMode?=?ThreadMode.MAIN) ? ? ? //主線程接
③
@Subscribe(threadMode?=?ThreadMode.BACKGROUND)? ? ? ? ?//子線程接
④
@Subscribe(threadMode?=?ThreadMode.ASYNC)//重新開線程接