问题标签 [rx-android]

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 回答
1944 浏览

android - 如何结合 Observable带有可观察的?

我正在使用 RxAndroid 库学习 RxJava,同时使用 Retrofit 进行网络,并使用 RetroLambda 使用 Java8 lambdas。

我希望构建的应用程序具有以下功能:

  • 允许用户输入对 Wikipedia API 的查询
  • 键入后等待 1 秒,直到完成网络调用
  • 当应用程序“忙”获取结果时显示进度指示器
  • 进度指示器在键入后立即启动,而不是在 1 秒后,并在收到结果或错误时结束

我让它像这样工作:

现在,我希望添加一个新的小部件,以允许我的维基百科查询使用另一种语言。现在,我将选择一个 Switch,“en”或“nl”作为 wikipedia url 的前缀。

用户与其交互之前的 GUI

所以我从 Switch 制作了一个新的 Observable,它会发出OnCheckedChangeEvents。

我的想法是,我需要将此 Observable 与textStream.

当开关翻转时,应该运行基本相同的功能,但不完全。当前正在运行的查询(如果正在运行)变得过时了,因为 url 前缀会改变。它应该再等待 1 秒钟,然后开始一个新的网络调用。

显然以下方法不起作用:

我不能只合并textStreamand languageSwitchStream

所以问题变成了:我应该如何使用正确的 Rx 来解决这个问题?

== 解决方案 ===========================

扩展批准的答案,我.startsWith()在 Switch 的 Observable 中添加了一个,否则它会一直等待它被翻转,然后再发出一个值。

0 投票
2 回答
3005 浏览

java - 如果结果在 RxJava 中无效,如何发送 onError

我已经实现了这样的 POJO。

例如,如果Response成功,我将收到Result.

Country为了在s上执行组合操作,我只flatMap使用了 WebResponse 并应用了相关的操作符。像这样:

现在服务器本身有可能会发送失败,该失败将在Response. 发生这种情况时,我想触发Subscribers onError()

我怎样才能在不破坏链条的情况下做到这一点?

0 投票
1 回答
3370 浏览

android - RxJava,在链接两个可观察对象之前在观察者线程中执行代码

我正在使用 RxJava 和 RxAndroid,我想组合两个 observables,但在这两者之间我需要更新 UI,所以我必须在主线程中执行代码,然后才能到达订阅者。

一种解决方案,而不是平面映射(这是一个公认的术语吗?)两个可观察对象,是在更新 UI 后立即在订阅者中调用下一个可观察对象,但我觉得应该有一个更优雅的解决方案,例如:

当然,可能 map 不是我这里需要使用的运算符。那么,是否有运营商或更好的方法来实现这一目标?还是我错过了关于可观察对象应该如何工作的观点?

0 投票
1 回答
928 浏览

android - 使用 RxJava Async 时的循环推理

我在 Android 中使用 RxJava 将以下内容用作异步任务。

我正在尝试使用 Java 8 更新此代码。

但是,它在上面的代码中报告了“循环推理” 。不确定,我错过了什么。

任何指向问题的指针。

提前致谢。

0 投票
3 回答
7167 浏览

android - 使用回调/侦听器链接 RxJava 可观察对象

我正在使用带有 Observables 的 Retrofit,并且想链接 observables。通常它与map()or之类的函数配合得很好flatMap(),因为它会api返回一个完成任务的 Observable。但在这种情况下,我必须执行以下操作:

  1. getKey() 从api
  2. 在另一个库中使用返回的密钥Foo并等待回调被调用。
  3. 当回调返回时,将结果发送到api.

我希望这是一个单链调用,这样我只需要订阅一次。我猜我可以使用merge()orjoin()或其他东西,但不确定处理回调的最佳方法是什么。

有没有办法让它变得更好?这是我到目前为止所拥有的:

0 投票
3 回答
17333 浏览

java - RxJava 单后台线程调度器

我对 RxJava 还很陌生,所以这可能是一个愚蠢的问题。我将描述我的场景。

我在 UI 线程上运行了一些代码,它们将更新一些图像,但这些图像不是很重要,它们在生成它们时会消耗一些资源,所以我想在单个线程上生成它们(当然不是 UI 线程)和一一生成。我猜蹦床调度程序是我想要的,但我的问题是,如果我使用它,那么它会在 UI 线程上完成工作,我希望它在另一个线程上完成。

显然我可以编写自己的线程,我可以在其中对项目进行排队,然后逐个处理这些项目,但我认为 RxJava 可能会为我提供一个简单的解决方案?

我当前的代码如下所示:

我的日志显示“在 ui 线程上?” 总是有真实的。那么如何使该代码和所有后续尝试在单个线程(而不是 ui 线程)上按顺序运行,而无需编写一堆代码来排队该工作?

编辑:

我相信这现在可以使用Schedulers.single()或者如果你想要你自己的你可以使用来完成new SingleScheduler()。我仍在测试,但我认为它可以满足我发布此内容时的要求。

0 投票
2 回答
4552 浏览

java - 使用 RxJava + Retrofit 对列表中的每个项目进行 API 请求

我试图通过将多个改造 api 调用链接在一起来创建一个 observable。步骤是:

  1. 使用 api 调用获取 json 对象列表
  2. 对于列表中的每个对象,进行另一个 api 调用以获取有关该项目的更多详细信息
  3. 将从这个新的详细对象获取的数据写入磁盘上的文件(列表中的每个项目都会发生这种情况)
  4. 最后返回一个单独对象的可观察对象,该对象要求为之前的每个对象创建一个文件

这是我到目前为止所拥有的:

有人可以确认我使用了正确的运算符。谢谢 。

0 投票
1 回答
6558 浏览

android - 使用 OkHttp、Okio 和 RxJava 下载文件

我正在尝试使用 OkHttp 下载文件并使用 Okio 写入磁盘。我还为这个过程创建了一个可观察的 rx。它正在工作,但是它明显比我以前使用的(Koush 的 Ion 库)慢。

以下是我创建可观察对象的方法:

有谁知道是什么原因导致速度变慢,或者我是否错误地使用了运算符?

0 投票
2 回答
581 浏览

android - Kotlin 库 'rxkotlin-0.21.0.jar' 的格式不受支持。请更新库或插件

标题中的错误出现在 Android Studio 中,作为我所有代码上方的警告栏:错误

Android Studio 版本:Android Studio1.1.0
的 Kotlin 插件版本:0.11.91.AndroidStudio.4
build.gradle似乎正在使用所有最新版本的 Kotlin 库的文件:

0 投票
3 回答
1055 浏览

android - How to transform a nested list of double values into a Java class using RxJava?

In my Android client I receive this JSON data from a backend:

Here is the routine which actually loads the data. I am using RxAndroid and Retrofit here.

How can I map the inner List<Double> to a specific Java class such as ProductLevel using RxJava operators?

Finally, I would like to receive this: List<ProductLevel>.