Android RXJava 清理解决方案

Android RXJava cleaner solution

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

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

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

=> 在将命令列表转换为 Observable 之前,我在需要的地方添加了 "Wait" 命令。 等待命令只是调用 Thread.sleep(delayInMs)。观察和订阅都运行在同一个 后台线程。 Observable 发出命令。如果命令是 UiCommand 的一个实例 订阅者将执行发布到 uiThread,否则它会在 后台线程。

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

这里似乎可以使用转换器将您的可观察对象从同步转换为异步。

看看这些例子

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