我想在 android 上用 RxJava 实现以下功能:
TimeUnit 类包含具有整数属性“length”的Sequence 类列表(TimeUnit 有一个序列列表)。
序列的长度为 1 - 10 秒。
当调用 TimeUnit run() 方法时,计时器启动并执行列表中的第一个序列。在那个序列 2 等之后
例子:
TimeUnit
- Sequence 1 -> 10 seconds
- Sequence 2 -> 4 seconds
- Sequence 3 -> 5 seconds
如何在 RxJava 中实现此输出:
TimeUnit started
Starting "Sequence 1"
Sequence 1 -> second 1
Sequence 1 -> second 2
Sequence 1 -> second 3
...
Starting "Sequence 2"
Sequence 2 -> second 1
....
TimeUnit completed in 19 seconds
我尝试了很多 Rx 技术,例如 interval()、concatMap()、flatMap() ...但都没有成功。
您将如何为此设置骨架? Rx 是否能够连接间隔?
我没有代码 fragment ,因为没有有效的解决方案
最佳答案
如果你不介意使用一些不是来自 RxJava 的代码,你可以使用这个解决方案:
public Observable<String> createObservable(TimeUnit timeUnit){
Handler handler = new Handler();
Observable<String> observable = Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
for(Sequence sequence : TimeUnit.getSequenceList()){
Runnable runnable = () -> {
subscriber.onNext(sequence.length);
};
handler.postDelayed(runnable, sequence.lenth);
}
}
});
return observable;
}
只是一个示例,请根据您的需要进行调整。
我认为这是一个很好的方法,因为您尝试做的事情不是很琐碎,所以一点点命令式代码不会有什么坏处。
编码愉快!
关于android - RxJava 1 安卓 : How to create a sequence of timers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41840667/