问题标签 [rx-java3]

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 投票
1 回答
88 浏览

android - 涉及 MockWebServer 的单元测试因 Auth0 的 Android 库版本 2 而失败

我们将我们的 Auth0 Android 库从 1.30 升级到 2.0,并且我们的一些使用 OkHttp 的单元测试坏MockWebServer了。

  1. 第一个测试以 a 失败,java.lang.ExceptionInInitializerError而这又是由java.lang.RuntimeException: Method getMainLooper in android.os.Looper not mocked.
  2. 接下来的三个测试失败了java.lang.NoClassDefFoundError: Could not initialize class com.auth0.android.request.internal.DefaultThreadSwitcher
  3. 其余的测试被卡住,直到被取消。

对于上下文,我们在代码库中使用 RxJava3 和 Android Jetpack 库,例如 LiveData,并在 REST API 中使用 Retrofit。

我尝试 @ExtendWith(InstantExecutorExtension::class, RxImmediateScheduler::class)像这样添加类声明:

但之后,所有测试都会在日志中返回“测试被忽略”:

下面是我们如何初始化测试类的代码片段:

这是第一个失败的测试:

0 投票
1 回答
37 浏览

kotlin - rxjava,如何检查 Single 的结果

使用 kotlin,有代码

代码流程:

以及打电话的时候

问题是是否要检查Singles<RemoteDataResponse>返回的fetchRemoteDataApi()(即使用 Log.i(...) 打印输出的内容RemoteDataResponse等),无论是在出错还是成功的情况下,怎么做?

0 投票
0 回答
55 浏览

rx-java2 - 什么是/如何为并行流动选择“预取”?

我在这里阅读并行流文档,它提到:

默认情况下,并行级别设置为可用 CPU 的数量 (Runtime.getRuntime().availableProcessors()),来自顺序源的预取量设置为 Flowable.bufferSize() (128)。两者都可以通过parallel() 的重载来指定。

我仍然不明白这个预取的目的,以及为什么它这么大。我想这意味着它下面的运算符将持有超过 1 个排放量(默认情况下为 128 个)。但是,我无法想象这是一个好主意,因为下游运营商将有效地单线程,直到我们从上游排放超过 128 个?(例如,如果我们有 130,第一个 128 将由一个线程预取,最后 2 个将给第二个。所有其他线程将什么都不做。)。

我猜在更快的流中更小的对象应该有更大的预取,因为在 rx 链之间传递数据的成本会相对更高,所以我们希望预取更高。我不确定在这里选择哪些数字。

0 投票
2 回答
521 浏览

android - 授予权限后未调用 RxPermissions

我正在使用 RxPermissions 来处理我的项目中的权限。

这是我处理CAMERA权限的代码:

这被称为onClick事件。

由于某种原因,在 is 之后没有调用里面的代码,Consumer我必须点击按钮两次才能打开活动。permissiongranted

我在应用程序的不同部分使用了相同的代码并且它工作正常,我不明白为什么在 Fragment 中它工作正常而在另一个它没有。

我也尝试过这样但不成功:

0 投票
1 回答
157 浏览

android-room - 为什么我的 Activity 暂停时,我的 Android ViewModel 的 Room RxJava3 Flowable 没有发布任何结果?

我知道这是一个复杂的问题,如果不发布数百行代码就无法给出明确的答案,这就是我通过一般想法和指针寻求帮助的原因。

我有一个 Room@Query返回一个 RxJava3 Flowable<List<...>>,我在 RxJava 线程上订阅了它,并从RxJava 线程上Schedulers.io()的活动范围内观察。然后将数据存储在我的 ViewModel as中,在处理 Android 组件的生命周期时,它比 RxJava 表现得更好。ViewModelAndroidSchedulers.mainThread()LiveData

这个想法是有一个干净和即时的数据更新模式,不必在每个活动或片段生命周期事件(例如onPausedand )上分别处理处置和重新订阅onResumed,并且即使我的活动被隐藏也可以在后台更新以便在返回我的活动时避免可怕的刷新滞后。我对这种设计模式感到非常惊讶。我仍然是,但我开始怀疑。

List<...>当使用相同的设计模式启动另一个活动时,我确实更改了一个值并立即从另一个获取更新ViewModel。不同Activity的,不同ViewModel的,相同的设计,相同的数据库表。返回第一个Activity时,我发现新数据永远不会更新:即使数据集发生了变化,Room 也没有发出任何更新。我必须再次处理和订阅才能看到新数据。

所以我的问题是:关于我的问题的根源可能在哪里的任何指针?!这种设计模式的核心是不是有些烂掉了?我误解了所有这些东西应该一起工作吗?由于某些线程问题,这只是我的错误吗?或者我应该为 Room 填写错误报告?

ViewModel我试图从我的第一个观察另一个非 Room RxJava3 观察Activity,并且当它的数据集更新时它确实得到更新。

顺便说一句,我还使用 Hilt 将所有内容注入为@Singleton.

感谢您的时间 :-)

0 投票
1 回答
77 浏览

java - 然后和最后使用 Flowable 反应式 x Java

尝试使用 Flowable,然后使用 RxJava3。

上面的代码有错误,但我想要实现的在下面的场景中描述

  1. 迭代文件
  2. 将 file.getFilename() 和字节添加到 requestBody
  3. 然后调用返回字符串的 this.iProduct.post(requestBody)
  4. 最后返回字符串值
0 投票
1 回答
89 浏览

java - 转换出版商也许>

我有以下方法

来自的返回类型this.iProductClient.post(requestBody.build());Maybe<HttpResponse<?>>

如何将下面的代码转换为返回Maybe<HttpResponse<?>>,目前下面的方法有错误

0 投票
1 回答
115 浏览

java - Flowable 执行任务并返回 String Rx Java ReactiveX 列表

执行任务,最后使用 Flowable rxjva3 返回值。我有以下代码

基本上,它会迭代并将图像上传到谷歌存储。然后返回的媒体 URL 应该返回到 String 列表。但是尝试了下面的代码,返回类型是Maybe<U>. 执行此操作的正确方法是什么?

更新 1

这也不正确,返回类型应该是Maybe<List<String>>

0 投票
2 回答
9216 浏览

java - io.reactivex.exceptions.UndeliverableException 异常无法交付给消费者,因为它已经取消/处置

使用时收到 UndeliverableExceptioncompletable

异常是从谷歌存储中抛出的,这是正确的,但试图处理doOnError方法

RXJava 异常

从 rxjava 文档https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling我需要处理应用程序中的错误。

我需要编写以下代码,

我的问题是我应该在哪里写这段代码。我有一个使用 java 的 Micronaut 应用程序,或者这是处理异常的唯一方法。

0 投票
1 回答
24 浏览

android - 随机处理改造 2 请求

我得到一个索引组成列表(102 个股票代码),我想找出有关它们的详细信息,但是在 102 个查询中,执行的查询始终不超过 10 个,并且股票代码是随机选择的。所有请求都通过使用 RxJava3 的改造 2 执行。可能是什么问题呢?这是视图模型代码:

这是模型的初始化:

这是请求方法本身: