gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 01:12:39 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com