我想在android上实现以下RxJava:
类 TimeUnit 包含类序列的列表(TimeUnit具有序列列表),其具有整数属性“length”。
序列的长度为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能够连续间隔吗?
我没有codenippet,因为没有解决方案
答案 0 :(得分:1)
如果你不介意使用一些非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;
}
这只是一个例子,可以适应您的需求。
我认为这是一个很好的方法,因为你试图做的并不是很微不足道,所以一些命令性的代码不会受到伤害。
快乐的编码!