热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

30分钟学会EventBus3.0详解(一)(引入和初始化EventBus3.0)(by星空武哥)

转载声明原创地址:http:blog.csdn.netlsyz0021articledetails5198530730分钟学会EventBus3.0详解(一)(引入和初始化EventBus

转载声明原创地址:http://blog.csdn.net/lsyz0021/article/details/51985307


30分钟学会EventBus3.0详解(一)(引入和初始化EventBus3.0)

30分钟学会EventBus3.0详解(二)(EventBus3.0的详细使用)

前言

EventBus是greenrobot出品的非常优秀的基于发布、订阅模式的一套框架,很早就想写篇文章介绍他的文章,可是一直也没时间写,今天就写篇文章也算总结一下吧。

       首先说说EventBus的优点:它是一个基于观察者模式的事件发布/订阅框架,开发者可以通过极少的代码去实现多个模块之间的通信,而不需要以层层传递接口的形式去单独构建通信桥梁。从而降低因多重回调导致的模块间强耦合,同时避免产生大量内部类。它拥有使用方便,性能高,接入成本低和支持多线程的优点,实乃模块解耦、代码重构必备良药。

它支持Activities, Fragments, Threads, Services之间的数据传递,这是他的官方原理图。



EventBus3.0和之前的EventBus2.4使用上是有区别的,由于3.0使用了注解的方式,并且增加了“SubscriberInfoIndex”要比2.0的效率高出了很多,所以今天我们讲解EventBus3.0的使用。


2017年3月13日文章修改(gradle2.2.0后的代码生成)

由于gradle2.2.0修改了注解的生成方式,所以在eventbus3.0生成“MyEventBusIndex”也不相同。

在gradle2.2.0之前使用:android-apt

在gradle2.2.0之后使用annotationProcessor


引入EventBus3.0

gradle2.2.0之前引入EventBus3.0

1、在app的build.gradle中的 dependencies 中添加的 EventBus3.0的依赖

compile 'org.greenrobot:eventbus:3.0.0'

2、如果你想开启加速模式,你还需要配置eventbus-annotation-processor

(1)在dependencies 中添加

apt 'org.greenrobot:eventbus-annotation-processor:3.0.1'

(2)在dependencies的下方添加

apt {
arguments {
eventBusIndex "com.bandeng.MyEventBusIndex"
}
}

(3)配置plugin

apply plugin: 'com.neenbedankt.android-apt'

app的build.gradle中的配置图



(4)最后这里在project build.gradle配置

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'


gradle2.2.0之后引入EventBus3.0

如果你使用的gradle2.2.0及更高版本,那么就需要下面的方式引入Eventbus了,在build.gradle中配置如下

android {
defaultConfig {
javaCompileOptions {
annotationProcessorOptions {
arguments = [ eventBusIndex : 'com.bandeng.MyEventBusIndex' ]
}
}
}
}

dependencies {
compile 'org.greenrobot:eventbus:3.0.0'
annotationProcessor 'org.greenrobot:eventbus-annotation-processor:3.0.1'
}
   看图配置



生成加速的MyEventBusIndex类

    设置完成后要记得rebuild一下



rebuild之后,我们就可以做在build目录下看到MyEventBusIndex这个类了(如果还没有生成的话,可以先将app运行到手机后再rebuild试试)




初始EventBus

EventBus有个获取单利的方法EventBus.getDefault(),这样就可以获取EventBus对象了

EventBus.getDefault()
但是,如果我们还想 用加速模式,那么就要先现在Application的onCreate()方法中调用下面的方法

/**
* 作者: lcw on 2016/7/6.
* 博客: http://blog.csdn.net/lsyz0021/
*/
public class MyApplication extends Application {

@Override
public void onCreate() {
super.onCreate();
// 启用EventBus3.0加速功能
EventBus.builder().addIndex(new MyEventBusIndex()).installDefaultEventBus();

}
}

然后在清单文件的Application节点下配置name为

        android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:name=".MyApplication"
android:theme="@style/AppTheme">








这样我们再调用EventBus.getDefault()就开启了加速模式了
EventBus.getDefault();


我在这里写了一个EventBus工具类,方便大家使用,可以参考一下。https://github.com/lsyz0021/EventBusUtils


30分钟学会EventBus3.0详解(一)(引入和初始化EventBus3.0)

30分钟学会EventBus3.0详解(二)(EventBus3.0的详细使用)


拿出微信 扫码关注下面的微信订阅号,及时获取更多推送文章





推荐阅读
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • Vue cli2.0 项目中使用Monaco Editor编辑器
    monaco-editor是微软出的一条开源web在线编辑器支持多种语言,代码高亮,代码提示等功能,与VisualStudioCode功能几乎相同。在项目中可能会用带代码编 ... [详细]
  • MyBatis错题分析解析及注意事项
    本文对MyBatis的错题进行了分析和解析,同时介绍了使用MyBatis时需要注意的一些事项,如resultMap的使用、SqlSession和SqlSessionFactory的获取方式、动态SQL中的else元素和when元素的使用、resource属性和url属性的配置方式、typeAliases的使用方法等。同时还指出了在属性名与查询字段名不一致时需要使用resultMap进行结果映射,而不能使用resultType。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • 本文记录了作者对x265开源代码的实现与框架进行学习与探索的过程,包括x265的下载地址与参考资料,以及在Win7 32 bit PC、VS2010平台上的安装与配置步骤。 ... [详细]
  • npminstall-Dbabelcorebabelpreset-envbabelplugin-transform-runtimebabelpolyfillbabel-loader ... [详细]
  • IDApro反编译exe时生成的C文件中#include的defs.h文件在IDA目录下plugins文件夹内*Thisfilecontainsdefinition ... [详细]
  • Sublime Text 3 + LiveReload + Chrome
    安装LiveReload在SublimeText3中安装LiveReload。macOS快捷键⌘+⇧+P,输入InstallPackage,搜索LiveReload并回车安装。(W ... [详细]
author-avatar
小王子loving
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有