美文网首页
EventBus简单的使用

EventBus简单的使用

作者: PlutoWnn | 来源:发表于2018-01-30 15:00 被阅读154次

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

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

相关文章

  • EventBus3.0使用(一)

    3Steps简单使用EventBus3.0 在使用EventBus 先在Gradle 添加依赖 定义Event事件...

  • EventBus简单使用

    一、简单介绍 EventBus是一种能够简化各组件间的通信,通过解耦发布者和订阅者简化Android事件传递用以代...

  • EventBus 简单使用

    简单记录下EventBus的使用: setup1 接收页面 setup2 接收页面 setup3 setup4 ...

  • EventBus简单使用

    概述 EventBus是一个Android事件发布/订阅框架,通过解耦发布者和订阅者简化Android事件传递,这...

  • EventBus简单使用

    Gradle:compile 'org.greenrobot:eventbus:3.0.0' 2.先注册要使用的A...

  • Android中EventBus的进阶使用

    Android中EventBus的进阶使用 EventBus使用一-基础 1 概述 前一篇给大家简单演示了Even...

  • Android EventBus源码分析

    一、先看看EventBus的简单使用 1. 导入eventbus 2. MainActivity 3. Commo...

  • EventBus简单的使用

    前言:因为用到了第三方SDK,想用Bundle传递数据,发现里面的类没有序列化根本不行啊,所以就用了EventBu...

  • EventBus的简单使用

    EventBus 做个阶段总结 项目上用的越来越多了 之前项目上一直用的是广播 换成eventbus之后感觉世...

  • EventBus 的简单使用

    本篇文章主要介绍以几下个知识点:使用 EventBus 的步骤一个简单的demo 1. EventBus 简介 *...

网友评论

      本文标题:EventBus简单的使用

      本文链接:https://www.haomeiwen.com/subject/uclczxtx.html