zoukankan      html  css  js  c++  java
  • EventBus的使用

    # 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更新操作

  • 相关阅读:
    Java 将Clob字段转换成String字符串
    Java BigDecimal详解
    java循环创建对象应该在循环体内还是循环体外
    Java 通过身份证获取生日和性别
    Java将数据进行分组处理
    Java 2进制和16进制的转换
    Map-HashMap 与 IF 判断内存占用对比
    Groovy脚本-通用SQL开关
    Oracle用户、授权、角色管理
    【docker随笔系列】安装sqlserver
  • 原文地址:https://www.cnblogs.com/yjpjy/p/5670804.html
Copyright © 2011-2022 走看看