// 接受Eventbus事件
Handler messageHandler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == B1_commentAdapter.PRAISE) {
comment_id = (String) msg.obj;
//具体实现方法
praiseComment(comment_id);
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//注册EventBus
EventBus.getDefault().register(this);
}
@Override
public void onDestroyView() {
super.onDestroyView();
//反注册EventBus
EventBus.getDefault().unregister(this);
}
/**
* 接受自定义的事件,并分发处理onEventMainThread也尅
* EventBus是根据MyToolNumberEvent等类名来判断监听的事件的,然后可以根据RefreshNumber等参数决定具体函数
* @param event
*/
public void onEventMainThread(MyToolNumberEvent event) {
switch (event.getAction()){
case MyToolNumberEvent.SetToolNumber:
showMsgNumber(event.getNumber());
break;
}
}
(3).自定义事件类:
//自定义事件:工具栏数字处理
public class MyToolNumberEvent implements Serializable{
public static final int SetToolNumber =0;//设置工具栏数字
public static final int RefreshNumber =1;//减少工具栏数字
int action;//事件名称
int number;//数据
public MyToolNumberEvent(int action,int number) {
this.action = action;
this.number = number;
}
public int getAction() {
return action;
}
public void setAction(int action) {
this.action = action;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
}
【其他】
接受的回调方法除了onEventMainThread,还有onEvent 、onEventBackgroundThread、onEventBusAsync,具体区别如下:
a、onEvent 它和ThreadModel中的PostThread对应,这个也是默认的类型,当使用这种类型时,回调函数和发起事件的函数会在同一个线程中执行
b、onEventMainThread,当使用这种类型时,回调函数会在主线程中执行,这个在Android中非常有用,因为在Android中禁止在子线程中修改UI
c、onEventBackgroundThread,当使用这种类型时,如果事件发起函数在主线程中执行,那么回调函数另启动一个子线程,如果事件发起函数在子线程执行,那么 回调函数就在这个子线程执行。
d、onEventBusAsync,当使用这种类型时,不管事件发起函数在哪里执行,都会另起一个线程去执行回调。
参考资料: