EventBus简单的使用

前言:因为用到了第三方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();
}

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,939评论 25 708
  • 一、简介 EventBus是由greenrobot 组织贡献的一个Android事件发布/订阅轻量级框架。Even...
    Mr丶sorrow阅读 14,996评论 0 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,853评论 18 139
  • 接着以前的笔记 消息确认 当处理一个比较耗时的任务的时候,我们不知道消费者是否会运行到一半的时候就挂掉。在以前的代...
    嘿嘿_小于同学阅读 1,729评论 0 2
  • 配置本地 git 用户信息 git config --global user.name "你的名字"git con...
    1024AAA阅读 217评论 0 0