问题标签 [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.
java - RxAndroid - 如何在 onCompleted() 之后抛出致命异常
我们正在为我们的 api 调用使用 RxAndroid + 改造。
我有点理解为什么序列中的任何异常都会通过 onError() 传递 Throwable。
但是如何结束序列,然后如何处理响应并再次返回抛出致命异常?我原以为 onCompleted() 中的处理会允许这样做,但我仍然看到 onError() 被调用。
下面的简化片段。给出结果 -
谢谢你的帮助
java - 在 RxJava/RxAndroid 中为 Activity 生命周期处理订阅的正确方法是什么?
我刚刚开始使用 RxJava/RxAndroid。我想避免上下文泄漏,所以我创建了一个 BaseFragment ,如下所示:
在我扩展 BaseFragment 的片段中,我正在这样做:
所以我想我的问题有两个:
这是否会因为我取消订阅 onDestroy() 而停止上下文泄漏?
我是否通过在完成后将订阅设置为 null 并检查 nullity 来正确跟踪 observable 是否“正在运行”?
java - RxJava:如何重置长时间运行的热可观察链?
对于我的应用程序的搜索功能,我有一个热的可观察链,它执行以下操作。
- 接受用户输入字符串到
EditText
(aTextChangedEvent
) (onmainThread
) - 去抖 300 毫秒(在
computation
线程上) - 显示加载微调器 (
mainThread
) - 使用该字符串查询 SQL 数据库(此查询可能需要 100 毫秒到 2000 毫秒之间的任何时间)(打开
Schedulers.io()
) - 向用户显示结果 (
mainThread
)
因为第 3 步的长度变化很大,所以会出现竞争条件,即较新的搜索结果显示在较新的结果上(有时)。假设用户想要输入chicken
,但由于输入速度很奇怪,单词的第一部分在整个术语之前发出:
- 首先发送搜索
chick
,然后发送chicken
. - 说
chick
需要1500ms
执行,而chicken
需要300ms
执行。 - 这会导致
chick
搜索结果错误地显示搜索词chicken
。这是因为chicken
搜索首先完成(仅用了 300 毫秒),然后是chick
搜索(1500 毫秒)。
我该如何处理这种情况?
- 一旦用户通过 a 我不关心旧搜索触发新搜索
TextChangedEvent
,即使它仍在运行。有什么办法可以取消旧的搜索?
完整的可观察代码:
android - RxJava,flatmap 的好用例
我是 RxJava 新手,经常被 flatMap 函数弄糊涂。根据文档,平面图transform the items emitted by an Observable into Observables, then flatten the emissions from those into a single Observable
有人可以为它提供一个好的用例吗?为什么要将原始的 Observable 转换为 Observables(复数)然后将它们转换为单个 Observable。
为什么不直接使用“地图”?
如果您在 Android 中给出一个很棒的示例,否则纯 Java 就足够了。谢谢
android - 用 RxJava 替换监听器
目前我正在调查向 RxJava 的迁移,并决定我的经理(accountManager)将是一个有趣的起点。目前,Manager 有一个侦听器列表,并在帐户更新和出现问题时相应地发送更新。
我的 Rx 解决方案涉及Subject
然后当更新发生时,我调用以下方法之一:
问题
问题是一旦onError
被调用,任何通过监听的人observe
将永远不会从onNext
.
我仍然希望订阅者收到 onError 以便他们可以处理错误状态,但稍后onNext
仍然可以使用更新的帐户调用,我仍然希望订阅者处理更新的帐户。
我已经尝试过使用 的解决方案onErrorResumeNext
,onErrorReturn
onExceptionResumeNext
但它们都没有传播onError
.
TLDR:如何在调用 onError 后保持订阅者的状态,同时仍在传播 onError?
multithreading - RxJava:订阅后阻塞可观察对象?
我特别需要一个可观察的。
通常,我的 observables 在不同的线程中运行。但是,有时他们需要在订阅过程中阻塞另一个线程。未来的行为方式。
一个例子:
突然,另一个线程上发生了一个事件,该事件向当前线程发出信号,表明它应该等待订阅的执行s
。(一个例子是 Android 的onPause
.)
我怎么做?我如何等待订阅s
,甚至可能检索所有结果?
(主题?)
rx-java - Android Studio 无法识别 AndroidObservables
这听起来像是一个愚蠢的问题。我已经把它放在我的 gradle 文件中
但AndroidObservables
仍然无法识别并且我的代码无法编译,我已经尝试过同步 Gradle。任何提示?谢谢
rx-java - RxJava,如何在 Observables 调用链的不同状态下更新视图?
我需要使用一个 Observable 执行一项任务,获取发出的数据,然后使用另一个 Observable 执行另一个查询。通常我会使用 aflatmap
来链接两个 Observable,只关心发出的最后一条数据。现在需要在此过程中更新视图。假设当第一个 Observable 发出数据时,我应该在 UI 上显示一个文本行。
我知道我可以将其分解为两个调用时间,onNext()
在第一个调用内部调用第二个 Observable,但这很麻烦。
我怎样才能在不走这条路的情况下实现我上面描述的目标?谢谢
android - RxJava:在每个订阅者处理资源后关闭资源
我是 RxJava 的新手,我正在努力弄清楚如何正确关闭资源,尤其是在处理多个订阅者时。
我有一些资源Observable<T>
在哪里(例如,一个 Android 数据库.T
Closeable
Cursor
我可能在 observable 上有多个订阅者。我想close()
在每个订阅者处理完资源后获取资源。换句话说,在新资源交付/发出后关闭旧资源,并在最后一个订阅者取消订阅时最终关闭最后一个。
我尝试使用我调用的自定义运算符使其工作AutoCloseOperator
,它几乎可以工作,但不太正确。即我仍然处于竞争状态和/或泄漏,例如资源没有被关闭。
在 RxJava 中执行此操作的正确方法是什么?
说我有这个代码:
然后我期望以下行为:
注意:我没有PublishSubject
在我的真实代码中使用它,我只是在这里用于说明目的,我使用它在每次更新数据库表时Observable.create
发出...Cursor
概括问题:我可以只使用doOnNext
并doOnUnsubscribe
关闭旧项目,但这并没有考虑到这些事件会发生多次(对于每个订阅者),我只想在所有订阅者都有时关闭资源收到新商品。
是自定义运营商使用lift()
的方式,还是有一些现有的运营商可能会对此有所帮助?
我已将我的问题简化为GitHub 上的一个小型命令行应用程序。感谢您的关注!
rx-java - 添加 RxBinding 时出现此错误
添加 RxBinding 时出现此错误
应该遵循建议或将我的 sdk:minSdkVersion 升级到 15 还是有更好的解决方案?