zoukankan      html  css  js  c++  java
  • Activity跳转通过EventBus传值问题

    根据阿里发布的Android开发规范:下载地址:https://102.alibaba.com/downloadFile.do?file=1520478361732/Android_v9.pdf

    Activity 间的数据通信,对于数据量比较大的,避免使用 Intent + Parcelable
    的方式,可以考虑 EventBus 等替代方案,以免造成 TransactionTooLargeException。

    A界面 跳转到 B界面,传对象。

    但是用普通的EventBus方法【 EventBus.getDefault.post(xx)  】是存在问题的:问题是由于主界面还未创建,用于接收的EventBus还未注册,即发布者发了消息,但订阅者还未产生(一般消息的处理逻辑是先注册订阅,后接收),这样没有收到消息当然无法响应操作。

    EventBus的粘性事件可以解决这样的问题。

    基本使用方法:

    1,A界面 粘性事件的发布:

    EventBus.getDefault().postSticky(barcodeEventBean,"registerData");
    //跳转到接收message的界面
    Intent intent = new Intent(A.this, B.class);
    startActivity(intent);

    2,B界面 粘性接收器的注册:

    //注册EventBus的粘性事件
    EventBus.getDefault().registerSticky(this);

    3,B界面 接收A界面传值的方法

    @Subscriber(tag = "registerData")
        public void getRegisterBarcode(EventBean.BarcodeEventBean barcodeEventBean) {
            if(barcodeEventBean != null && barcodeEventBean.getBarcodeList() != null){
              Log.e(barcodeEventBean.toString)
            }
    
        }

    4,B界面在销毁的时候,取消注册

    @Override
        protected void onDestroy() {
            super.onDestroy();
           EventBus.getDefault().removeStickyEvent(EventBean.BarcodeEventBean.class,"registerData");
        }
    over


  • 相关阅读:
    mysql日期加减
    cron 配置计划任务的书写格式(quartz 时间配置)
    空值排序问题
    update 表名 set 字段=值,数据更新
    insert into 数据插入
    SQL里面的char类型
    SQL使用代码创建数据完整性,约束
    SQL制表
    sql创建数据库
    验证码
  • 原文地址:https://www.cnblogs.com/ruichenblogs/p/9109805.html
Copyright © 2011-2022 走看看