Android RXJava清洁解决方案

时间:2016-06-08 05:54:58

标签: android multithreading delay rx-java blocking

我有一个动态的命令列表,应该执行。 其中一些命令对象应该在后台线程中执行,其中一些 必须在UiThread上执行,因为它们会更改视图并触发动画。

在另一个命令完成之前,不允许执行某些命令。例如。 C1触发淡入淡出的动画,持续2秒。 C2触发淡出动画。 =>命令之间的延迟是动态的。

我是RXJava的新手。我的解决方案有效,但似乎不是很优雅。

=>在将命令列表转换为Observable之前,我在需要时添加“Wait”命令。 wait命令只调用Thread.sleep(delayInMs)。观察和订阅都是相同的 背景线程。 Observable发出命令。如果该命令是UiCommand的实例 订阅者将执行发布到uiThread,否则它会执行命令 背景线程。

使用RXJava解决此问题的最佳方法是什么?我想摆脱 UiThread帖子和列表的前期准备。但用RXJava功能替换它。

1 个答案:

答案 0 :(得分:1)

这似乎可以使用变换器将您的observable从同步转换为异步。

看看这些例子

https://github.com/politrons/reactive/blob/master/src/test/java/rx/observables/transforming/ObservableCompose.java