EventBus是一个订阅/发布消息总线,实现在应用程序里面,组件之间,线程之间的通信。因为event是任意的类型,所以这个使用起来非常方便。

eventbus中的角色:

event:当然就是事件啦

subscriber:事件的订阅者,先注册,接收特定的对象,并通过onEventXXX()来回收处理事件。

Publisher:事件的发布者,通过post发布信息。

处理过程主要分为5步:

1.定义一个事件(event)

2.注册一个订阅者

3.发布一个事件

4.接收处理一个事件

5.注销一个订阅者

四种处理事件的方式onEventXXXX

onEvent函数一共有四种,前面的例子只用到一个onEvent。

函数名 含义 ThreadMode
onEvent 事件处理在事件发送的那个线程执行 PostThread
onEventMainThread 事件在主线程-UI线程执行 MainThread
onEventBackgroundThread 事件在一个后台线程执行(就一个后台线程) BackgroundThread
onEventAsync 事件会单独启动一个线程执行(每个事件都会启动一个线程) Async

其中前三个事件处理方式,都应该尽快完成。

在as下的代码示例

改module下的在build.gradle 文件里面,dependencies目录下添加这一句话

compile 'de.greenrobot:eventbus:2.4.0'

在连网的情况下,build工程,as会自动去网上下载相应的jar包。build结束后就可以编程了。

1.定义event。在FirstEvent.java中的代码如下

 public class FirstEvent {

     private String msg;
public FirstEvent(String str){
msg = str;
} public String getMsg(){
return msg;
}
}

2.注册一个订阅者,在MainActivity.java 中的onCreate()方法中加入如下代码

 EventBus.getDefault().register(this);

3.发布一个事件。在SecondActivity中发布一个事件,当点击button后发布事件,代码如下

   protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second); btn = (Button)findViewById(R.id.second_btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //发布一个事件
EventBus.getDefault().post(new FirstEvent("this is an event. "));
}
});

4.接收并处理一个事件,在MainActivity中处理改事件,添加如下代码。

  public void onEventMainThrend(FirstEvent event){
String str = "this is in main activity , "+event.getMsg(); Log.d("yuqt",str);
tv.setText(str);
Toast.makeText(this,str,Toast.LENGTH_LONG).show();
}

5.注销事件,在onDestroy()中进行注销。

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

完成。

在Android studio环境下使用EventBus的更多相关文章

  1. Android Studio环境下代码混淆+签名打包

    Android Studio环境下代码混淆+签名打包 作者 Mr_冯先生 关注 2016.08.21 01:10 字数 1040 阅读 734评论 5喜欢 34 注:本文使用的Android Stud ...

  2. Android Studio环境下搭建ReactNative

    1.安装Android Studio首先肯定是 安装Android Studio(包含SDK)(国内推荐)ps:这里有一点要注意,需要为SDK配置环境变量,名称必须为ANDROID_HOME 2.安装 ...

  3. 【Mac + Android】之Android Studio 环境搭建,AVD模拟器运行(包括:命令行运行AVD,并且Genymotion模拟器插件配置运行)

    目录: 前提.Mac环境下手动配置Android SDK 一. Android Studio下载及配置 二.AVD模拟器配置运行 扩展:命令行运行AVD模拟器 三.在Android Studio 中配 ...

  4. genymotion安装(unknown generic error)及配置在Android studio环境中

    /*转载请注明出处.本文地址:http://write.blog.csdn.net/postedit/44261371*/ genymotion模拟器的长处我就不阐述了,一个字:快!! .如今来说一下 ...

  5. Ubuntu下Android Studio环境搭建

    1.JDK安装 a.准备 由于AS(Android Studio)不支持openjdk,需要另行下载oracle jdk,同时官网指出对于64位linux系统,为了能在其上运行32位程序,需要安装一些 ...

  6. 【Android测试】【随笔】Android Studio环境搭建

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5482778.html 随着Android Studio的推 ...

  7. Android Studio 环境部署 (转载)

    Android Studio的安装和使用过程经常需要下载以来文件和Gradle版本,而Google网站在天朝的访问可谓步履维艰,没有稳定的FQ工具是非常痛苦的.何况,作为一个优秀的程序员,不能访问国外 ...

  8. Android Studio 环境搭建参考,jdk10javac命令提示不是内部或外部命令

    https://blog.csdn.net/qq_33658730/article/details/78547789 win10下Android Studio和SDK下载.安装和环境变量配置 http ...

  9. 【App性能监控】:Android studio环境的搭建(以及遇到个各种坑)

    今天搭建app性能测试环境,使用的是android studio的Android Device Monitor抓取trace日志分析: 1,下载最新的android studio安装,这一步没啥问题: ...

随机推荐

  1. 会话管理---Cookie与Session

    会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 保存会话数据的两种技术:Cookie,Session Cookie是客户端技术, ...

  2. php ajax 下拉加载数据

    视图 <html> <head> <title>健康知识</title> <script type="text/javascript&q ...

  3. 使用React Native一年后的感受

    转载自:http://www.dobest.me/blog/2016/06/12/%E4%BD%BF%E7%94%A8React%20Native%E4%B8%80%E5%B9%B4%E5%90%8E ...

  4. Android :android.os.Process.myTid()与 Thread.currentThread().getId();

    这两种方式得到的ID并不是相同的,前者的返回值是int,后者是long. 个人猜测:应该是一个线程的两种得到的方式.类似于一个人有2个名字. 如有不对,请指正!

  5. 编译hadoop2.4

    摘自 http://www.aboutyun.com/thread-8130-1-1.html.http://www.dataguru.cn/forum.php?mod=viewthread& ...

  6. GameUnity 2.0 文档(四) 网格+四叉树 最优碰撞检测

    在写之前,必须对 前一篇文档补充一下. Camera2DAngle类是 摄像机旋转 2d人物360度,PlayerMove是人物移动. 这两个类 都可以 360 °  场景旋转人物也跟着旋转. 但不能 ...

  7. php socket客户端及服务器端应用实例

    经常有朋友会对php的socket应用充满疑惑,本文就以实例代码作一讲解,希望能对初学php的朋友起到一点帮助作用 具体代码如下: 1.服务器端代码: <?php class SocketSer ...

  8. [转载] ASP.NET MVC4使用百度UEDITOR编辑器

    前言 配置.net mvc4项目使用ueditor编辑器,在配置过程中遇见了好几个问题,以此来记录解决办法.编辑器可以到http://ueditor.baidu.com/website/downloa ...

  9. JavaBean--JavaBean与表单

    SimpleBean.java: package cn.mldn.lxh.demo ; public class SimpleBean { private String name ; private ...

  10. zepto为什么不支持animate,报animate is not a function

    在zepto.min.js文件中搜索animate看有没有,如果没有就是没有加入animate的模块 解决办法,去github中打开src/文件夹,找到fx.js文件,把内容追加到zepto.min. ...