Rxjava1升级Rxjava2坑

共存问题

通常情况下,如果我们希望在一个模块中既想使用rxjava1又想使用rxjava2,这个时候在运行的时候会出现一下报错:

... APK META/-INF/rxjava.properies
解决办法:要么都用rxjava1要么都用rxjava2

出现此报错的原因大概就是找到某个类的两个文件入口,因此无法判断使用哪个方法.

依赖问题

如果有依赖rxjava1,那么升级时在运行时也会出现上述所说的问题:
a、第三方模块
b、手动导jar包
c、通过compile方式的库

... APK META/-INF/rxjava.properies
解决办法:
1、通用的办法(这种方法基本可以适用于所有的依赖问题,这种方式是在打包的时候排除这些问题件):
packagingOptions{
   exclude 'META-INF/rxjava.properties'
}

2、解决通过compile方式依赖的问题:
找出compile方式的库中存在依赖rxjava库(同时也适用于第三方模块中的compile情况),然后在最后面加上@aa
例如:
compile 'com.darsh.multipleimageselect:multipleimageselect:1.0.4@aar'

其中最大的坑就是Bmob的引用问题(希望Bmob能尽快解决):
由于本人是使用导jar包的方式引入Bmob的,因此我就对这种方式的依赖问题说下自己的观点。

Bmob的SDK代码中由于依赖了rxjava1,而rxjava2与rxjava1中的包名于类名有了不小的改变,除非你自己去改了SDK的代码,否则的话就只能用第一种方式来解除依赖问题。
还有一点就是在Bmob中也依赖了许多库比如说Annotation,gson,如果我们在编译运行时候也发现类似上述问题的话,我的解决方式是通过压缩文件打开bmob的jar包,然后删除对应的库的文件夹就好了。

自己对第三方库和第三方服务的一些看法

这里我想说的一点就是,希望以后第三方库在升级的时候能兼容下低版本的。
还有第三方服务最好不要于某种库太过于耦合

rxjava2与rxjava1的一些变化

下面我给出rxjava2的学习博客[给初学者的Rxjava2.0教程][1]

Action -> Consumer

Action0 改成了 Action
Action1 改成了 Consumer
Action2 改成了 BiConsumer
可能是因为3-9没什么人用的缘故,官方把Action3-Action9给删除了

Func -> Function

Func 改成 Function
Func2 改称了 BiFuncation
Func[3 - 9] 改成了 Function[3 - 9]

Observable.OnSubscribe -> ObservableOnSubscribe

Observable.OnSubscribe 改成了 ObservableOnSubscribe

Observable.Transformer -> ObservableTransformer

Observable.Transformer 改成了 ObservableTransformer

Subscription -> Disposable

Subscription 改成了 Disposable

发现一个lambda的优点

由于rxjava1 到 rxjava2的一些类名和类的方法名发生了变化。因此在使用new方式来设置对象的时候,通过要把类名和方法名字一起改了,如果使用的是lambda表达式,那么基本不用改代码,说多无畏,上代码:

分析以上代码我们会发现,除了类名于方法名不同之外,其他都是一个样

下面是llambda表达式代码:

看到了么,我们在升级的时解决类名问题,如果两个版本的类名没有改,则直接可以通过去除rxjava1的包,导入rxjava2的包就可以搞定了,是不是神操作

Rxjava1升级Rxjava2踩坑一记的更多相关文章

  1. python3.6和pip3:Ubuntu下安装升级与踩坑之路

    本文以Ubuntu16.x系统为例,演示如何安装python3.6和相应环境.安装Python3的机器必须要能访问外网才能进行如下操作! 1. 安装方式 在Ubuntu下安装python有两种方式: ...

  2. jQuery升级踩坑大全

    jQuery升级踩坑大全 背景 jQuery想必各个web工程师都再熟悉不过了,不过现如今很多网站还采用了很古老的jQuery版本.其实如果早期版本使用不当,可能会有DOMXSS漏洞,非常建议升级到j ...

  3. Spark 1.6升级2.x防踩坑指南

    原创文章,谢绝转载 Spark 2.x自2.0.0发布到目前的2.2.0已经有一年多的时间了,2.x宣称有诸多的性能改进,相信不少使用Spark的同学还停留在1.6.x或者更低的版本上,没有升级到2. ...

  4. SpringBoot1.x升级SpringBoot2.x踩坑之文件上传大小限制

    SpringBoot1.x升级SpringBoot2.x踩坑之文件上传大小限制 前言 LZ最近升级SpringBoo框架到2.1.6,踩了一些坑,这里介绍的是文件上传大小限制. 升级前 #文件上传配置 ...

  5. .NET Core 从1.1升级到2.0记录(Cookie中间件踩坑)

    .NET Core 2.0 新时代 万众瞩目的.NET Core 2.0终于发布了,原定于9.19的dotnetconf大会的发布时间大大提前了1个月,.NET Core 2.0/.NET Stand ...

  6. jQuery升级踩坑之路

    1.使用了被废弃的jQuery.browser属性 jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support . 在更 ...

  7. jQuery版本升级踩坑大全

    背景 -------------------------------------------------------------------------------- jQuery想必各个web工程师 ...

  8. 【踩坑记】从HybridApp到ReactNative

    前言 随着移动互联网的兴起,Webapp开始大行其道.大概在15年下半年的时候我接触到了HybridApp.因为当时还没毕业嘛,所以并不清楚自己未来的方向,所以就投入了HybridApp的怀抱. Hy ...

  9. NET Core2.0 Memcached踩坑,基于EnyimMemcachedCore整理MemcachedHelper帮助类。

    DotNetCore2.0下使用memcached缓存. Memcached目前微软暂未支持,暂只支持Redis,由于项目历史原因,先用博客园开源项目EnyimMemcachedCore,后续用到的时 ...

随机推荐

  1. 一个最简单的Servlet实例

    先在tomcat的webapps目录下,新建一目录,如test.然后,在test目录下建立WEB-INF为名的目录.这个必须有. 然后,在WEB-INF目录下建立classes目录.用以存储所用到的c ...

  2. 一张图搞定OAuth2.0 在Office应用中打开WPF窗体并且让子窗体显示在Office应用上 彻底关闭Excle进程的几个方法 (七)Net Core项目使用Controller之二

    一张图搞定OAuth2.0   目录 1.引言 2.OAuth2.0是什么 3.OAuth2.0怎么写 回到顶部 1.引言 本篇文章是介绍OAuth2.0中最经典最常用的一种授权模式:授权码模式 非常 ...

  3. Android清单文件具体解释(四) ---- backupAgent的使用方法

    在<application>节点中有一个很重要的属性,那就是backupAgent.这里我们将它单独列出来,从基本含义,使用方法及其相关属性等方面来具体介绍一下. 1.backupAgen ...

  4. Codechef Racing Horses题解

    找一个数组中两数之间最小的不同值. 思路: 1 排序 2 后前相减,比較得到最小不同值 三个数甚至很多其它数之间的不同值都是这么求了,时间效率都是O(nlgn) -- 排序使用的时间 原题: http ...

  5. 解决burp suite 使用chrome訪问https失真的问题

    用burp suite 訪问https网页 尤其使用chrome(有时候firefox也会) 会出现js或者css载入不出来的情况 这样的时候,导出burp suite的证书,保存为cer格式 然后进 ...

  6. SQLServer IP不能登录问题解决

    最近项目项目需要,要在windows2008R2服务器上部署项目,可是客户那边服务器上SqlServer也没有安装,一切都要自己解决,所以我就找了个2008的版本,进行安装,安装过程没有遇到什么问题, ...

  7. 获取SQLServer连接字符串的方法

     第一步:创建向导文件 在桌面创建一个txt文件,并将文件后缀改成“.udl”.    第二步:选择“提供程序”tab页 双击新创建的“.udl”文件,进入后选择“提供程序”tab页,选择“Micro ...

  8. 容器ConcurrentHashMap原理(学习)

    一.概述 HashMap 是非线程安全的,在不考虑性能问题的时候,我们的解决方案有 Hashtable 或者Collections.synchronizedMap(hashMap),这两种方式基本都是 ...

  9. Sqoop异常解决ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: No columns to generate for ClassWriter问题

    问题详情如下: 解决办法 这个是由于mysql-connector-java的bug造成的,出错时我用的是mysql-connector-java-5.1.10-bin.jar,更新成mysql-co ...

  10. CANopen——笔记

    1. c语言的typedef高级用法 typedef void (*post_sync_t)(CO_Data*); http://zhidao.baidu.com/link?url=_lDBGq_uk ...