android - RxJava 1 安卓 : How to create a sequence of timers?

标签 android timer rx-java

我想在 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/

相关文章:

java - 支持 v.23.2.0 的 RecyclerView 消失动画中的 NullPointerException

python - 在python中如何跟踪一段代码是否在一个时间间隔内执行,如果没有则停止

java - RxJava- CombineLatest 但仅针对一个 Observable 的发射触发?

android - RxJava - 组合多个/不同的网络服务调用

java - RxJava是多线程的吗?

java - 列表更新后 onItemClick 停止工作

android - 编译 Android 源代码 (JNI) 时出现构建错误

android - ListView、BaseAdapter、getViewTypeCount() - 如何强制适配器再次检查 getViewTypeCount()?

python - 如何设置计时器来控制循环内的函数调用?

javascript - X 秒后执行 JavaScript