我有一个动态的命令列表,应该执行。 其中一些命令对象应该在后台线程中执行,其中一些 必须在UiThread上执行,因为它们会更改视图并触发动画。
在另一个命令完成之前,不允许执行某些命令。例如。 C1触发淡入淡出的动画,持续2秒。 C2触发淡出动画。 =>命令之间的延迟是动态的。
我是RXJava的新手。我的解决方案有效,但似乎不是很优雅。
=>在将命令列表转换为Observable之前,我在需要时添加“Wait”命令。 wait命令只调用Thread.sleep(delayInMs)。观察和订阅都是相同的 背景线程。 Observable发出命令。如果该命令是UiCommand的实例 订阅者将执行发布到uiThread,否则它会执行命令 背景线程。
使用RXJava解决此问题的最佳方法是什么?我想摆脱 UiThread帖子和列表的前期准备。但用RXJava功能替换它。
答案 0 :(得分:1)
这似乎可以使用变换器将您的observable从同步转换为异步。
看看这些例子