问题标签 [rx-java2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
7805 浏览

android - 使用 Swagger codegen 生成 RX JAVA + Retrofit sdk

我想使用 swagger codegen 生成 sdk,它可以为我生成带有 Observable 作为回调的 sdk,如下所示:

@POST("oauth/token")
Observable <TokenResponse> getRepository(@Query("grant_type") String grantType);

0 投票
2 回答
2932 浏览

android - RxJava - 如何停止(和恢复)Hot Observable(间隔)?

我有以下 Hot Observable:

但是,我找不到阻止它的好方法。我能够使用标志 ( ) 部分解决takeWhileboolean问题runTimer

不过,我不喜欢这种方法有两件事:

  1. 我必须保留旗帜runTimer,这是我不想要的。
  2. 一旦runTimer变为false,Observable 就完成了,这意味着如果我想再次发出,我需要创建一个新的 Observable。我不想要那个。我只希望 Observable 停止发射项目,直到我告诉它重新开始。

我希望有这样的事情:

这样我就不需要保留任何标志,并且 observable 始终处于活动状态(尽管它可能不会发出事件)。

我怎样才能做到这一点?

0 投票
1 回答
163 浏览

java - 为什么 rx-java 邮政编码失败

这是测试代码

它会得到

我不明白为什么?

如果我像这样更新代码

它将按预期打印 12 。但为什么?这没有意义。

0 投票
2 回答
506 浏览

android - 可观察到的超时逻辑:迁移到 RxJava2

我正在慢慢地将我的应用程序从 RxJava 1 迁移到 RxJava 2。在更新了所有代码后一切正常,除了一个用例,我现在有点迷失了,我想我需要回到文件以正确获取它。

应用程序从网络加载一个集合,Asset并且此操作从 x 毫秒开始,它会显示加载动画。然后,当检索数据时,动画将停止/删除并显示数据。

这就是我使用 RxJava 1 所拥有的并且正在工作的东西:

这是我对 RxJava 2 的“翻译”:有了这个,数据永远不会显示,onComplete总是被调用,但onNext永远不会。未触发超时时也是如此。

0 投票
2 回答
6567 浏览

android - 使用 RxJava 2 和 Retrofit 2,适配器版本问题

我在 Android Studio 中的现有应用程序模块中添加了一个新的库模块。主要区别是添加了 RxJava 2 和 Retrofit 2。更新新模块的 build.gradle 后,我开始收到下一个错误:

错误:任务“:app:transformResourcesWithMergeJavaResForBetaNewApiDebug”执行失败。com.android.build.api.transform.TransformException:com.android.builder.packaging.DuplicateFileException:在 APK META-INF/rxjava.properties File1 中复制的重复文件:C:\Users\Gaket.gradle\caches\modules-2 \files-2.1\io.reactivex.rxjava2\rxjava\2.0.2\cfccdd18cdfbe7b4773d42c9f3512eeafbe5cbf9\rxjava-2.0.2.jar File2: C:\Users\Gaket.gradle\caches\modules-2\files-2.1\io.reactivex \rxjava\1.1.5\ece7b5d0870e66d8226dab6dcf47a2b12afff061\rxjava-1.1.5.jar

我看到 RxJava 存在一些问题(我想尝试 RxJava 2,在这里我看到了 RxJava 1 和 RxJava 2)。添加所有依赖项后立即出现问题,我们不在RxJava主应用程序中使用。

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

我检查了几个主题:第一个 是针对具体问题的一些具体解决方案,第二个是关于rxbindings,但我不使用它们,其他一些也没有解决我的问题或看起来像这个问题的总解决方法。我试图用谷歌搜索“rxjava 2 and retrofit 2”,但没有找到解决方案。

这是build.gradle图书馆的:

问题是:
为什么会发生这个问题,处理它的正确方法是什么?

0 投票
1 回答
252 浏览

rx-java2 - RxJava 2:主题的替换

在 RxJava 1.x 中,可以T -> RSubject. 例如,输入类型可以是 aInteger而输出类型仍然可以是 a String。在 RxJava 2.0 中这个选项已经被移除,现在它只是Subject<T>代替Subject<T,R>. RxJava wiki 上的What's different in 2.0文档中也提到了此更改,但遗憾的是没有给出替换。除了声明Subjectas之外还有什么Subject<Object>

0 投票
2 回答
969 浏览

android - 使用 RxJava2 重新查询和更新订阅者

我的应用程序中有一个由改造服务支持的数据层。(到目前为止,只有网络上的持久性。当我进一步开发时,我将添加离线优先本地存储)

Observable<List<Item>>当我调用服务器时,Retrofit 会返回给我。这很好用。在我的订阅者中,我在订阅时会收到列表,然后可以使用Items.

我遇到的问题是:如果列表被修改(通过某种外部机制),我如何使可观察的重新查询改造服务并发出新的项目列表。我知道数据已过时,但我不确定如何启动重新查询。

这是我的精简版DataManager

0 投票
3 回答
1814 浏览

android - 带有 JUnit 的 RxJava2:在测试中没有抛出异常

下面的代码在 JUnit 环境下运行时不会崩溃。但是在应用程序中运行时它会崩溃。我可以在控制台中看到错误日志,但测试被标记为通过。

所以,问题是:如何让它在 JUnit 中崩溃。因为是的,如果某些东西在应用程序中不起作用,那么如果它在单元测试中也不起作用,那是一件好事:)

在这个例子中,我可以直接访问 observable。但在我的真实测试中,我没有。真正的 observables 只是被测试类的内部细节。我能做的最多的事情就是注入调度程序或其他东西。

那么,如何在没有直接访问 observable 的情况下让它崩溃呢?

另外,我刚刚检查了这段代码也没有崩溃:

0 投票
2 回答
1833 浏览

android - RxJava2 JUnit 测试

我在对 RxJava 代码部分进行单元测试时遇到了一些麻烦。我想测试下面的方法。这是一种演示者方法。

在最好的情况下,我想backendService为特定的搜索查询和附加/分离视图模拟和测试这个用例。

我做了一些研究,我知道toBlocking()test()方法。他们都认为我有Observable可用的。我想我必须以某种方式拆分方法。您对此有何看法?

我的堆栈:RxJava2、dagger、MVP。

0 投票
2 回答
1331 浏览

android - RxJava2:无法使用 retryWhen 处理异步回调异常

我正在尝试连接到 MQTT 代理。如果连接失败,我想重试。我收到关于连接成功或失败的回调。

在阅读了 retryWhen 的多个示例并处理了异步回调之后,我将这段代码放在了一起。如果我成功连接,它工作正常。此外,如果我e.onError(throwable)Flowable. 但是,如果我e.onError(throwable)从回调的onFailure()方法调用它会使我的 android 应用程序崩溃。

这是代码:

RxJava 链

创建一个Flowable

创建重试函数

消费者:在这里做所有好事

错误日志

问题

  1. 为什么此代码会引发导致应用程序崩溃的异常?理想情况下,它应该处理异常?我在这里想念什么?
  2. 为什么不重试3次?
  3. e.onError(throwable)如果我从方法同步调用,为什么相同的代码会正确重试Flowable.subscribe()

参考

  1. RxJava 1.x retryWhen 文档
  2. 这个博客