EventBus传递消息(数据)和广播有点像,对广播传递数据有兴趣的可以看一下;Android数据传递,使用广播BroadcastReceiver;

1、添加build.gradle

implementation 'org.greenrobot:eventbus:3.1.1'

好了,引入之后我们就可以愉快的使用eventbus了;

2、在接收消息的界面:MainActivity

注册EventBus接收器:

EventBus.getDefault().register(this);

接收EventBus发送过来的数据:

@Subscribe (threadMode = ThreadMode.MAIN) //主线程接收事件
public void onEventBus(String msg){
tv.setText(msg);
}

作为一个有经验的开发人员,我们一般的都会在界面销毁的时候去反注册一下:

  @Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}

下面是MainActivity类中的完整代码;

public class MainActivity extends AppCompatActivity {

    private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EventBus.getDefault().register(this);
tv = findViewById(R.id.tv);
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this,InputActivity.class));
}
});
}
@Subscribe (threadMode = ThreadMode.MAIN) //主线程接收事件
public void onEventBus(String msg){
tv.setText(msg);
} @Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
}

3、发送数据的类:InputActivity;

发送消息:

EventBus.getDefault().post(((EditText)findViewById(R.id.et)).getText().toString());

这样MainActivity中带有@Subscribe注解的onEventBus方法就能接收导数据了;

public class InputActivity extends AppCompatActivity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_input);
} public void postMsg(View view) {
EventBus.getDefault().post(((EditText)findViewById(R.id.et)).getText().toString()
+"____我就是EventBus发送的消息,是不是接收到很开心呢!!!");
finish();
}
}

布局:R.layout.activity_input

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".InputActivity">
<EditText
android:id="@+id/et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/et"
android:text="发送EventBus消息"
android:onClick="postMsg"
/>
</RelativeLayout>

还有一些粘性消息,切换线程的自己可以去看一下,这只是最简单的使用方法;

EventBus的使用;消息传递之EventBus;的更多相关文章

  1. Android消息传递之EventBus 3.0使用详解

    前言: 前面两篇不仅学习了子线程与UI主线程之间的通信方式,也学习了如何实现组件之间通信,基于前面的知识我们今天来分析一下EventBus是如何管理事件总线的,EventBus到底是不是最佳方案?学习 ...

  2. Android消息传递之EventBus 3.0

    Android消息传递之EventBus 3.0使用详解 http://www.cnblogs.com/whoislcj/p/5595714.html EventBus 3.0进阶:源码及其设计模式 ...

  3. EventBus (二) 使用详解——EventBus使用进阶

    相关文章: 1.<EventBus使用详解(一)——初步使用EventBus> 2.<EventBus使用详解(二)——EventBus使用进阶> 一.概述 前一篇给大家装简单 ...

  4. EventBus使用详解(二)——EventBus使用进阶

    一.概述 前一篇给大家装简单演示了EventBus的onEventMainThread()函数的接收,其实EventBus还有另外有个不同的函数,他们分别是: 1.onEvent2.onEventMa ...

  5. [EventBus源码解析] 初探EventBus

    本期blog作为EventBus(以下简称EB)学习的始动篇,主要记载了EB的功能.优点.使用方法,内容基于github上的README.md与HOWTO.md. 何为EventBus EB实现了An ...

  6. EventBus的使用,初学EventBus传值

    一.概述 EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间 ...

  7. Android消息传递之基于RxJava实现一个EventBus - RxBus

    前言: 上篇文章学习了Android事件总线管理开源框架EventBus,EventBus的出现大大降低了开发成本以及开发难度,今天我们就利用目前大红大紫的RxJava来实现一下类似EventBus事 ...

  8. 【热门技术】EventBus 3.0,让事件订阅更简单,从此告别组件消息传递烦恼~

    一.写在前面 还在为时间接收而烦恼吗?还在为各种组件间的消息传递烦恼吗?EventBus 3.0,专注于android的发布.订阅事件总线,让各组件间的消息传递更简单!完美替代Intent,Handl ...

  9. Android开发学习之路-EventBus使用

    EventBus是一个通过发布.订阅事件实现组件间消息传递的工具. 它存在的目的,就是为了优化组件之间传递消息的过程.传统组件之间传递消息的方法有使用广播,回调等,而这些方法使用都比较复杂. 工作原理 ...

随机推荐

  1. IDEA 创建maven项目

    说明 创建Maven项目的方式:手工创建 好处:参考IntelliJ IDEA 14 创建maven项目二(此文章描述了用此方式创建Maven项目的好处)及idea14使用maven创建web工程(此 ...

  2. 【java】一维数组

    数组概念: 同一种类型数据的集合,实际数组也是一个容器. 定义方式: //定义方法1:元素类型 [] 数组名 =new 元素类型 [数组元素个数或数组长度] 如 int [] arry =new in ...

  3. Ubuntu 14.04 正式版 12.4

    安装Ubuntu 14.04后要做的5件事情 4月17日,开源免费系统Ubuntu官方正式宣布发布Ubuntu 14.04 LTS(代号Trusty Tahr)正式版.官方声称该版本主打云计算,在云平 ...

  4. linux在线中文手册

    linux在线中文手册 http://linux.51yip.com/ 百度中的百度应用也不错 http://www.baidu.com/s?word=linux%E5%91%BD%E4%BB%A4& ...

  5. SQL2000服务端配置-如何让外网访问SQL2000

    刚刚写了个DEMO,在内网来测试SQL2000后完全正常.现在想测试外网是否正常,毕竟路由器IP不固定,所以选择了路由器+花生壳免费域名(koma.5166.info),所以先安装花生壳客户端软件.下 ...

  6. VS2010与Qt5.1.0集成(非源码方式)

    早就听说qt可以集成到VS中,就是一直没尝试过.一直在使用qt creator,也没觉得它有什么不好.可最近VS用多了,我发现一个qt creator中很不好的毛病,就是代码自动完成时,creator ...

  7. html文件form表单action调用servlet连接mysql数据库实例

    web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=&qu ...

  8. 【支付专区】之微信支付构建请求参数xml

    /** * <p>Desc:weChat构建请求参数</p> * <p>参数名ASCII码从小到大排序(字典序)</p> * @param params ...

  9. 关于 TensorFlow

    TensorFlow 是一个用于人工智能的开源神器 TensorFlow中文社区    http://www.tensorfly.cn/   文档 TensorFlow™ 是一个采用数据流图(data ...

  10. uoj #49. 【UR #3】铀仓库

    http://uoj.ac/problem/49 这题二分答案可以做,同时存在另一个直接二分的解法. 考虑对每个点,二分能向左右延伸的最大半径,由于权值范围较大,不能O(1)查询向一侧走指定距离后到达 ...