问题标签 [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.
android - 如何结合 Observable带有可观察的?
我正在使用 RxAndroid 库学习 RxJava,同时使用 Retrofit 进行网络,并使用 RetroLambda 使用 Java8 lambdas。
我希望构建的应用程序具有以下功能:
- 允许用户输入对 Wikipedia API 的查询
- 键入后等待 1 秒,直到完成网络调用
- 当应用程序“忙”获取结果时显示进度指示器
- 进度指示器在键入后立即启动,而不是在 1 秒后,并在收到结果或错误时结束
我让它像这样工作:
现在,我希望添加一个新的小部件,以允许我的维基百科查询使用另一种语言。现在,我将选择一个 Switch,“en”或“nl”作为 wikipedia url 的前缀。
所以我从 Switch 制作了一个新的 Observable,它会发出OnCheckedChangeEvent
s。
我的想法是,我需要将此 Observable 与textStream
.
当开关翻转时,应该运行基本相同的功能,但不完全。当前正在运行的查询(如果正在运行)变得过时了,因为 url 前缀会改变。它应该再等待 1 秒钟,然后开始一个新的网络调用。
显然以下方法不起作用:
我不能只合并textStream
and languageSwitchStream
。
所以问题变成了:我应该如何使用正确的 Rx 来解决这个问题?
== 解决方案 ===========================
扩展批准的答案,我.startsWith()
在 Switch 的 Observable 中添加了一个,否则它会一直等待它被翻转,然后再发出一个值。
java - 如果结果在 RxJava 中无效,如何发送 onError
我已经实现了这样的 POJO。
例如,如果Response
成功,我将收到Result
.
Country
为了在s上执行组合操作,我只flatMap
使用了 WebResponse 并应用了相关的操作符。像这样:
现在服务器本身有可能会发送失败,该失败将在Response
. 发生这种情况时,我想触发Subscriber
s onError()
。
我怎样才能在不破坏链条的情况下做到这一点?
android - RxJava,在链接两个可观察对象之前在观察者线程中执行代码
我正在使用 RxJava 和 RxAndroid,我想组合两个 observables,但在这两者之间我需要更新 UI,所以我必须在主线程中执行代码,然后才能到达订阅者。
一种解决方案,而不是平面映射(这是一个公认的术语吗?)两个可观察对象,是在更新 UI 后立即在订阅者中调用下一个可观察对象,但我觉得应该有一个更优雅的解决方案,例如:
当然,可能 map 不是我这里需要使用的运算符。那么,是否有运营商或更好的方法来实现这一目标?还是我错过了关于可观察对象应该如何工作的观点?
android - 使用 RxJava Async 时的循环推理
我在 Android 中使用 RxJava 将以下内容用作异步任务。
我正在尝试使用 Java 8 更新此代码。
但是,它在上面的代码中报告了“循环推理” 。不确定,我错过了什么。
任何指向问题的指针。
提前致谢。
android - 使用回调/侦听器链接 RxJava 可观察对象
我正在使用带有 Observables 的 Retrofit,并且想链接 observables。通常它与map()
or之类的函数配合得很好flatMap()
,因为它会api
返回一个完成任务的 Observable。但在这种情况下,我必须执行以下操作:
- getKey() 从
api
- 在另一个库中使用返回的密钥
Foo
并等待回调被调用。 - 当回调返回时,将结果发送到
api
.
我希望这是一个单链调用,这样我只需要订阅一次。我猜我可以使用merge()
orjoin()
或其他东西,但不确定处理回调的最佳方法是什么。
有没有办法让它变得更好?这是我到目前为止所拥有的:
java - RxJava 单后台线程调度器
我对 RxJava 还很陌生,所以这可能是一个愚蠢的问题。我将描述我的场景。
我在 UI 线程上运行了一些代码,它们将更新一些图像,但这些图像不是很重要,它们在生成它们时会消耗一些资源,所以我想在单个线程上生成它们(当然不是 UI 线程)和一一生成。我猜蹦床调度程序是我想要的,但我的问题是,如果我使用它,那么它会在 UI 线程上完成工作,我希望它在另一个线程上完成。
显然我可以编写自己的线程,我可以在其中对项目进行排队,然后逐个处理这些项目,但我认为 RxJava 可能会为我提供一个简单的解决方案?
我当前的代码如下所示:
我的日志显示“在 ui 线程上?” 总是有真实的。那么如何使该代码和所有后续尝试在单个线程(而不是 ui 线程)上按顺序运行,而无需编写一堆代码来排队该工作?
编辑:
我相信这现在可以使用Schedulers.single()
或者如果你想要你自己的你可以使用来完成new SingleScheduler()
。我仍在测试,但我认为它可以满足我发布此内容时的要求。
java - 使用 RxJava + Retrofit 对列表中的每个项目进行 API 请求
我试图通过将多个改造 api 调用链接在一起来创建一个 observable。步骤是:
- 使用 api 调用获取 json 对象列表
- 对于列表中的每个对象,进行另一个 api 调用以获取有关该项目的更多详细信息
- 将从这个新的详细对象获取的数据写入磁盘上的文件(列表中的每个项目都会发生这种情况)
- 最后返回一个单独对象的可观察对象,该对象要求为之前的每个对象创建一个文件
这是我到目前为止所拥有的:
有人可以确认我使用了正确的运算符。谢谢 。
android - 使用 OkHttp、Okio 和 RxJava 下载文件
我正在尝试使用 OkHttp 下载文件并使用 Okio 写入磁盘。我还为这个过程创建了一个可观察的 rx。它正在工作,但是它明显比我以前使用的(Koush 的 Ion 库)慢。
以下是我创建可观察对象的方法:
有谁知道是什么原因导致速度变慢,或者我是否错误地使用了运算符?
android - Kotlin 库 'rxkotlin-0.21.0.jar' 的格式不受支持。请更新库或插件
标题中的错误出现在 Android Studio 中,作为我所有代码上方的警告栏:
Android Studio 版本:Android Studio1.1.0
的 Kotlin 插件版本:0.11.91.AndroidStudio.4
build.gradle
似乎正在使用所有最新版本的 Kotlin 库的文件:
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>
.