问题标签 [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 回答
376 浏览

java - 如何为使用 AndroidSchedulers.mainThread() 的函数编写测试;来自 RxAndroid

我得到了一个NullPointerException测试方法shouldFetchMachineSettings()。通过调试,我意识到控件没有进入可观察对象的成功回调,并且没有启动意图。因此例外。我意识到问题出在使用AndroidSchedulers.mainThread();但无法找到解决方案。

机器设置.java

来自 MachineDetailsFragment.java 的调用

在 MachineDetailsFragmentTest.java 中进行测试

0 投票
1 回答
2548 浏览

android - WebSocket 和 Rx Java

我正在开发一个使用协议 WebSocket 与服务器通信的 android 应用程序。我使用 AsyncAndroid 库。WebSocket 有监听器,从服务器接收数据。

像这样的东西

我需要写这个api,我想使用rxjava。但我无法想象,那应该是 Observable 和那个 Observer。我试图将从服务器接收到的 Observable 字符串转换为 WebSocket 侦听器,但我认为这是个坏主意。有什么想法如何正确构建 api。感谢你。

0 投票
1 回答
1070 浏览

java - 使用 observeOn() Android UI 线程使我的模拟器测试崩溃

当我使用 RxAndroid 和.observeOn(AndroidSchedulers.mainThread()), 并使用 Android Studio 在模拟器上运行测试时,整个测试运行崩溃:

由于“ java.lang.NoSuchMethodError” ,检测运行失败

logcat输出如下:

Android Studio 和logcat输出都没有提到我的项目或测试中的任何代码行。以下是我创建的重现此崩溃的简短示例项目的一些相关部分:

app/build.gradle

MainActivity.java

MainActivityFuncTest.java

如果我将MainActivity代码修改为不使用,我的测试将正确运行observeOn()

但我宁愿使用observeOn(),因为它更干净,更模块化。我怎样才能让我的测试运行?

我的模拟器正在运行 API 版本 8 (Android 2.2)。

0 投票
1 回答
1244 浏览

rx-java - RxJava 可观察

我正在尝试处理我的第一个 RxJava 示例

我有一个带有文本框和三个按钮的主要活动。第一个按钮在一个单独的类中初始化一个整数。第二个按钮订阅一个被认为是观察整数的可观察对象。第三个按钮将整数的值减一。

这是我的代码

和班级

当我尝试使用mObservableClass它订阅时,它只给了我myBigInt(6)的值,然后它给了我onComplete完成!

然后我尝试使用newObservableClass我需要使用的想法,而不是.create,但随后我得到 null 的返回,myBigInt然后再次onComplete完成!

有人可以帮助我从正确的方向开始如何观察myBigInt. 理想情况下,我想观察 myBigInt 的值,直到它减小到零 (0),然后在零调用 onComplete 完成!

谢谢,约翰

0 投票
1 回答
700 浏览

reactive-programming - 使用 Rx 放入篮子/从篮子中取出

我有两个数据流:

  1. 布尔流,指示商品是否存在于购物篮中。
  2. 点击流,启动项目放入/删除到篮子/从篮子中删除。

首先,我想根据布尔流更改切换按钮的标题。这很简单。其次,我想将布尔流中的最新值和 Clicks 流中的事件结合起来,以启动放置或删除请求。

这是我到目前为止所尝试的:

但是, combineLatest 并不能胜任我的工作。相反,它会导致递归,因为至少发生了一次点击事件,并且 inBasketStream 在操作完成时更新。Zip 也无济于事,因为篮子流中可能会从另一个地方更改,因此存在堆叠多个布尔值的场景,这将使 zip 过时(只是下一个,而可能已经有更多值了堆叠在)下一次点击事件的值。

所以,我需要一种方法来从布尔流中获取最后一个值,并在点击事件发生时使用它。当然,我可以为此使用一个布尔字段(订阅 inBasketStream 并更新它 onNext),但我认为它不符合功能性,并且必须有一个组合来处理这个问题而无需额外的字段/变量。

谢谢。

PS 两个 observables 都很热

0 投票
2 回答
4076 浏览

android - 如何在 RxAndroid 中观察网络变化

我正在使用这里给出的代码。

我将这些代码块作为类放在项目的 util 包中。然后在主要活动课上我写了这个..

我的目标是监视更改并在网络更改为真假时静态更改 MyApp 类中定义的变量 MyApp.isConnected。帮助将不胜感激。谢谢

0 投票
1 回答
250 浏览

api - 多次使用相同的 Observable 和 Retrofit

我有一个管理器,它封装了对改造服务的调用,因为我需要在登录时保存会话令牌和对象,然后:

我的服务看起来像:

在我的活动中使用经理内部和外部的可观察对象是否正确?

它可以有什么问题?

- - 编辑

改为地图:

这是个好主意吗?

0 投票
1 回答
737 浏览

android - How to improve kotlin lambda syntax?

I'm trying to use kotlin M12 in android project and during the work I got this piece of code subscribe({onSuccess(it)}, {onFailure(it)})

This is not so bad, but I think it would/should be better. How can I improve it?

0 投票
2 回答
2888 浏览

java - 如何使用 Retrofit 和 RxJava/RxAndroid 处理响应错误?

我无法确定如何使用改造和 RxAndroid 处理响应错误。如果出现网络错误或类似情况,则会调用 onError(),但我需要能够获得响应以检查是否存在身份验证错误。相反,我得到的是一个带有空字符串的令牌,我不知道为什么。解决此问题的最佳方法是什么?

这是我目前的 RxAndroid 电话。

这是我的改装服务

这是我当前的适配器

这是我的令牌课程。

我应该如何处理这个。它可以在 RxAndroid 部分完成,还是我需要向我的 RestClient 添加一些东西,或者完全是其他东西?

谢谢。

编辑

0 投票
1 回答
5488 浏览

java - 在 RxJava 中,如何在错误时重试/恢复,而不是完成 observable

我想要实现的是:

  • 监视特定更改的偏好
  • 当检测到变化时,使用新值开始新的网络调用
  • 变换结果
  • 在 UI 中显示结果

我知道更改何时发生,现在我假设我需要在主题上调用 onNext。这应该会触发一个 Rx 链,最后我可以更新 UI。

但是在网络调用失败的情况下,可观察到的错误,并且调用 onNext() 不会导致另一个网络调用。

所以我的问题是,我应该如何处理这个问题?我怎样才能保持 Observable 完整,这样我就可以向它抛出另一个值?例如,我可以想象一个简单的重试按钮,它只是想忽略发生错误的事实。