RxJava 1 Android:如何创建计时器序列?

RxJava 1 Android:如何创建计时器序列?,android,timer,rx-java,Android,Timer,Rx Java,我想在android上用RxJava实现以下功能: 类时间单位包含一个类序列列表(时间单位有一个序列列表),该序列具有整数属性“length” 序列长度为1-10秒 调用TimeUnit run()方法时,计时器启动并执行列表中的第一个序列。在序列2之后,等等 例如: TimeUnit - Sequence 1 -> 10 seconds - Sequence 2 -> 4 seconds - Sequence 3 -> 5 seconds 如何在RxJava中实

我想在android上用RxJava实现以下功能:

时间单位包含一个类序列列表(时间单位有一个序列列表),该序列具有整数属性“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是否能够每隔一段时间接收信号


我没有代码片段,因为没有有效的解决方案

如果您不介意使用一点非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;
    }
公共可观察createObservable(时间单位时间单位){
Handler=newhandler();
Observable-Observable=Observable.create(newobservable.OnSubscribe()){
@凌驾
公用无效呼叫(用户)