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. weblogic自带的jdk是在工程的包部署后编译使用

    weblogic自带的jdk是在工程的包部署后编译使用的.当用户把项目打包部署到weblogic上面,运行该项目的java环境jdk就是用的weblogic自带的jdk了,工程中的jdk和编译时的jd ...

  2. SaltStack学习系列之state常用模块

    常用模块:cron,cmd,file,mount,ntp,pkg,service,user,group cmd模块 参数: name:要执行的命令 unless:用于检查的命令,只有unless指向的 ...

  3. IntelliJ IDEA在行尾增加分号

    IntelliJ IDEA在行尾增加分号 Ctrl+Shift+Enter - 本身的含义是自动完成,如果需要的话,会在行尾添加分号:

  4. [Java][Android] 多线程同步-主线程等待全部子线程完毕案例

    有时候我们会遇到这种问题:做一个大的事情能够被分解为做一系列相似的小的事情,而小的事情无非就是參数上有可能不同样而已! 此时,假设不使用线程,我们势必会浪费许多的时间来完毕整个大的事情.而使用线程的话 ...

  5. 仅仅需一步教你解决Win10下Android Studio terminal无法使用的问题

    Android Studio集成和加入了一些有用的工具.当中一个便是terminal. 在Windows平台下Android Studio中的terminal在原理上实际使用的是window中的cmd ...

  6. 【bzoj4443】[Scoi2015]小凸玩矩阵

    第K大也就是第n-K+1小,所以就可以的二分答案了 (江哥讲过一道类似题) 二分答案找出比当前答案小的数的位置的坐标,判断一下是否可以选出满足不在同一行同一列的n-K+1个数,然后就可以跑匈牙利了,对 ...

  7. 危险的input 微博的过去

    更改uid post地址不变

  8. go14--并发concurrency,Goroutine ,channel

    package main /** 并发concurrency 很多人都是冲着 Go 大肆宣扬的高并发而忍不住跃跃欲试,但其实从 源码的解析来看,goroutine 只是由官方实现的超级“线程池”而已. ...

  9. hdoj--1379--DNA Sorting(排序水题)

     DNA Sorting Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  10. sublime —— 强大的插件

    1. 代码 自动补全与智能提示: All Autocomplete:Sublime Text 默认的 Autocomplete 功能只考虑当前的文件,而 All Autocomplete 插件会搜索所 ...