EventBus简单的使用

2018-01-30  本文已影响154人  PlutoWnn

前言:因为用到了第三方SDK,想用Bundle传递数据,发现里面的类没有序列化根本不行啊,所以就用了EventBus来传递数据,在此记录一下吧。
一:添加依赖
首先我们需要在主项目的build.gradle里面添加依赖:我们就用3.0的EventBus吧。
依赖如下:

 compile 'de.greenrobot:eventbus:3.0.0-beta1'

二:我们创建两个Activity,分别为MainActiivty和SecondActivity,我们在MainActiivty里面发送数据,然后在SecondActivity里面接收数据。

(1):我们先创建一个MessageEvent的类来模拟数据:

  public class MessageEvent {
     public String name;

public MessageEvent(String aName) {
    this.name = aName;
}
  }

(2)在MainActivity里面传递数据:

就传递一个字符串Hello好了

    findViewById(R.id.bt).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            startActivity(intent);
            EventBus.getDefault().post(new MessageEvent("Hello"));
        }
    });

(3):在SecondActivity里面接收数据:
1,首先我们先注册一下:

   EventBus.getDefault().register(this);

2,然后页面销毁时在onDestroy里面解注册:

  EventBus.getDefault().unregister(this);

3,然后再来接收数据:

@Subscribe(threadMode = ThreadMode.MainThread)
public void onEventMainThread(MessageEvent messageEvent) {
    Log.e(TAG, "messageEvent~~~" + messageEvent.name);
    Toast.makeText(this, messageEvent.name, Toast.LENGTH_SHORT).show();
}

一定不要忘了subscrip描述。
运行一下,点击发现并没有收到Toast吐司啊,什么情况?
我们来修改一下代码:
首先在MainActivity里面我们用postSticky来代替post发送。

    findViewById(R.id.bt).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            startActivity(intent);
            EventBus.getDefault().postSticky(new MessageEvent("Hello"));
        }
    });

在其次我们在subscribe里面加上sticky = true.

@Subscribe(threadMode = ThreadMode.MainThread,sticky = true)
public void onEventMainThread(MessageEvent messageEvent) {
    Log.e(TAG, "messageEvent~~~" + messageEvent.name);
    Toast.makeText(this, messageEvent.name, Toast.LENGTH_SHORT).show();
}

在运行一下发现没问题了。
具体问题出在哪里还没有弄明白,有知道的小伙伴告知一下啦。

上一篇 下一篇

猜你喜欢

热点阅读