# EventBus用于android线程间的通信,方便将子线程的数据发送的UI线程,对UI界面更新;总体来说对于这个过程可以分为3个步骤:
1.创建event,用于传递信息;
比如你需要传List集合数据,就创建如下一个包含list元素的实体类:
public class EventList { List<User> list ; public EventList(List<User> list) { this.list = list; } public List<User> getList() { return list; } public void setList(List<User> list) { this.list = list; } }
2.通过post发送消息传递一个保存消息的实体类对象
EventBus.getDefault().post(new EventList(data)); //data为数据
3.在接收的地方注册eventBus同时完成接收处理
注册:
EventBus.getDefault().register(this);
接收 ,对于EventBus3.0已经支持任意的回调函数名,通过注解来找到回调入口,通过设置ThreadMode来设置回调在主线程或子线程 ,通过传入不同的event实体类来区别不同的EventBus请求
@Subscribe(threadMode = ThreadMode.MAIN) public void UpdateDutyInfo(EventList eventList) { if (eventList.getList() != null) { tvAttendanceId1.setText(eventList.getList().get(0).getNum()); tvAttendanceId2.setText(eventList.getList().get(1).getNum()); tvAttendanceId3.setText(eventList.getList().get(2).getNum()); tvAttendanceName1.setText(eventList.getList().get(0).getName()); tvAttendanceName2.setText(eventList.getList().get(1).getName()); tvAttendanceName3.setText(eventList.getList().get(2).getName()); } }
当
threadMode = ThreadMode.MAIN
为主线程回调,可以进行ui更新操作