eventbus3.0使用

来源:互联网 发布:java字符数组赋值 编辑:程序博客网 时间:2024/06/05 03:14

android studio中build compile ‘org.greenrobot:eventbus:3.0.0’

  • 列表内容
    由于界面比较多有时候发出去的消息不能接受所以用到粘性事件
    分为三步:
    准备阶段:
    定义接口类型父类,子类用的话直接继承
/** * 父类 * 当前的接口是针对eventbus而设计的,大致都是一些常用的数据类型的封装 * 注意:当前的接口是所有具体页面传递参数的基类: * 1  所有基类规则是去继承这个父类(子类也是接口) * 2 子类可以不用重写父类的方法因为都是接口,在具体传递参数的时候new 出来所有的实现方法,我们只用需要类型的方法就可以了 */public interface EventBusUtils<T> {    /**     * 对Map的数据封装     */    Map<T, T> ValuesMap();    /**     * 对字符串类型封装     */    String ValuesString();    /**     * 对集合的封装     */    ArrayList<T> ValuesArrayList();    /**     * 对Object封装     */    Object ValuesObject();}/**子类*/public interface OnlineOrderSelectTimeActivityBean extends EventBusUtils {}    1 在需要传输数据的地方发送粘性消息
 EventBus.getDefault().postSticky(new OnlineOrderSelectTimeActivityBean() {                @Override                public Map ValuesMap() {                    return null;                }                @Override                public String ValuesString() {                    String day = countTime.substring(5, 10);                    String time = countTime.substring(10, countTime.length());                    return day + " " + selectedweek + time;                    // 111                }                @Override                public ArrayList ValuesArrayList() {                    return null;                }                @Override                public Object ValuesObject() {                    return countTime;                }            });

2 在接受数据的地方

 @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)    public void showEventbus(EventBusUtils eventBusUtils) {        if (eventBusUtils instanceof CapteCeaseActivityBean) { //成人儿童预订信息            mevent = (CapteCeaseActivityBean) eventBusUtils;            Map valuesMap = mevent.ValuesMap();            aultCount = (int) valuesMap.get("aultCount");            childCount = (int) valuesMap.get("childCount");            homeCount = (int) valuesMap.get("homeCount");            text1 = (String) valuesMap.get("text1");            text2 = (String) valuesMap.get("text2");            text3 = (String) valuesMap.get("text3");            capteOrderHolder.setRightInfo(aultCount, childCount, homeCount, text1, text2, text3);        }        if (eventBusUtils instanceof CapteOrderHlderTimeInfoBean) {            mCapteOrderHlderTimeInfoBean = (CapteOrderHlderTimeInfoBean) eventBusUtils;            Map map = mCapteOrderHlderTimeInfoBean.ValuesMap();            startTime = (String) map.get("startTime");            endTime = (String) map.get("endTime");        }    }

3 移除粘性事件

@Override    protected void onDestroy() {        super.onDestroy();        if (mevent != null) {            EventBus.getDefault().removeStickyEvent(mevent);        } else if (mCapteOrderHlderTimeInfoBean != null) {            EventBus.getDefault().removeStickyEvent(mCapteOrderHlderTimeInfoBean);        }    }
原创粉丝点击