EventBus真能完全替代Intent传递数据?在线等

现在我有两个Activity;一个A 一个B。
A和B都在onCreate方法中执行了EventBus.getDefault().register(this);
在B中定义了public void onEventMainThread(String data)方法。
现在A中定义了一个按钮,点击按钮跳转到B并要传递数据,我使用了startActivity的方式启动B,现在我应该如何用EventBus传递参数到B?

在线等!会EventBus的童鞋都来说说.。。只有三个C币不知道怎么获得C币。。。

EventBus是什么东西,我没用过

在前一个Activity注册的时候,把目标的Activity实例化注册,就可以传参数了.

二楼是对的,在发送EventBus post请求之前在发送Activity实例化目标Activity(这样:EventBus.getDefault().register(new 目标Activity());)或者重写一个MainApplication里面(EventBus.getDefault().register(new 目标Activity());)。这样就可以啦。

我用的是EventBus 3.+。从AActivity跳到BActivity并携带参数,你需要做的是,重写AActivity中的onStop()方法。如下:

     @Override
    protected void onStop() {
        super.onStop();
        EventBus.getDefault().post(new MessageEvent("test"));
    }

在BActivity的onCreate()方法中register()。@Subscribe设置接受参数的方法。

可以使用粘性消息,也就是post的时候使用postSticky方法,并且接受端的subscribe注解中的sticky = true,则可以从以前的消息队列中获取粘性消息了,否则很可能导致第二个Activity还没创建完成消息就发送了,等到第二个actvity创建完后收不到消息的情况

  • 第一个Activity

    //这里跳转
    startActivity(intent);
    //发送粘性消息
    EventBus.getDefault().postSticky(data);
    
  • 第二个activity

     /**
     * 接收消息,这里最重要的是sticky=true
     * @param data 自己定义
     */
    @Subscribe(sticky = true,threadMode = ThreadMode.MAIN)
    public void eventComing(Data data){
       //操作一波...
    }