当前位置: 首页 > 知识库问答 >
问题:

使用RXJava2和Retrifit 2,适配器版本问题

晁国发
2023-03-14

我发现RxJava存在一些问题(我想尝试RXJava2,这里我看到了RXJava1和RXJava2)。在添加了所有依赖项之后,问题就出现了,我们没有在主应用程序中使用RxJava

更新:正如我在下面提到的,我检查了三个主题(你可以在下面看到)。这个问题:可能的重复类似于我已经在下面提到的一个:这个。这两种方法都没有考虑到我在回答中强调的真正问题。答案是“从Registfit2到RXJava2目前还没有生产就绪的适配器”(完整细节将在下面的答案中描述)。

我检查了几个主题:首先是具体问题的具体解决方案,其次是rxbindings,但我不使用它们,其他一些主题也没有解决我的问题,或者看起来像是完全的变通方法。我尝试谷歌“RXJava2和改型2”,但没有找到解决方案。

下面是库的build.gradle:

apply plugin: 'com.android.library'
apply plugin: 'com.jakewharton.butterknife'

android {
compileSdkVersion 25
buildToolsVersion "25.0.0"

defaultConfig {
    minSdkVersion 15
    targetSdkVersion 24
    versionCode 1
    versionName "1.0"

    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}



dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2',      {
    exclude group: 'com.android.support', module: 'support-annotations'
})

compile "com.android.support:appcompat-v7:$supportLibraryVersion"
compile "com.android.support:recyclerview-v7:$supportLibraryVersion"

compile 'io.reactivex.rxjava2:rxjava:2.0.2'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'com.squareup.okhttp3:okhttp:3.5.0'
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
compile "com.makeramen:roundedimageview:1.3.0"

annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
provided 'javax.annotation:jsr250-api:1.0'
compile 'com.jakewharton:butterknife:8.4.0'

testCompile 'junit:junit:4.12'

}

问题是:
为什么会出现这个问题,处理这个问题的正确方法是什么?

共有1个答案

曾鸿振
2023-03-14

您应该为RXJava的第二个版本使用官方适配器:

compile 'com.squareup.retrofit2:adapter-rxjava2:2.2.0 // works with RxJava 2

事实上,适配器的版本2.*.*并不意味着它像我想的那样是用于RXJava2的。

compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' // won't work with RxJava 2

以前,您应该使用一个临时版本:下面是Jake Wharton的Reportfit 2 to RXJava2适配器的存储库。

 类似资料:
  • 我正在尝试使用jsTestDriver运行用QUnit编写的单元测试。我得到“参考错误:平等未定义”。检查源代码显示适配器(Qunit- window.equals=函数(a, b, msg){...} 而Qunit不支持equals(去年改名为equal)。 我错过了什么吗? p.s .我用的是WebStorm 4中集成的jsTestDriver。

  • 适配器是一种特殊的库,它有一个父类和任意数量的子类。子类可以访问其父类元素,但不能访问其兄弟类的元素。在你的控制器中,适配器为类库提供了一种优雅的语法,因此类库会就此获益甚至会需要分解成离散的类。 适配器的源文件存放在system/libraries 目录下, 命名一个和类名字相同的文件夹,文件夹下存放该类。同时在该文件夹中,有一个子文件夹叫做 drivers在其中包含了所有的子类。 要使用一个适

  • 事实: > 用户、组、角色、领域、客户机等存在于主Keycloak配置中。 下载https://downloads.jboss.org/keycloak/3.4.3.final/adapters/keycloak-oidc/keycloak-tomcat7-adapter-dist-3.4.3.final.zip并在下解压缩 (使用uma_authorization的简单测试,每个用户都有角色)

  • 问题内容: 如何配置Maven编译器以将Java 5用于测试代码并将Java 1.4用于主代码? 问题答案: 如果要设置对相关Java版本的遵从性,则可以为每次执行配置编译器插件。假设Maven使用的JDK至少与您指定的最高版本相同。通过使用属性,可以在命令行或子项中覆盖该配置(如果需要): 如果您打算使用其他 编译器 ,则涉及的更多。因为您需要指定JDK的路径以及所使用的编译器版本。同样,这些可

  • 如何使用适配器模式 横滑的滚动栏理论上应该是这个样子的: 新建一个 Swift 文件:HorizontalScroller.swift ,作为我们的横滑滚动控件, HorizontalScroller 继承自 UIView 。 打开 HorizontalScroller.swift 文件并添加如下代码: @objc protocol HorizontalScrollerDelegate { } 这

  • 我正在使用pagerAdapter显示带有片段支持的内容。我得到了错误 当我在Android2.2或更低版本上运行应用程序时。但在安装Android4.0的设备上,这种方法运行得很好。请检查有错误的日志详细信息: java.lang.NoSuchMethodError:android.webkit.webview.SetLayerType 02-28 11:19:08.205:错误/Android