RxJava Observable.interval可以在Android上延迟吗?

问题描述 投票:0回答:1

我正在开发一个Android应用。它应该每1分钟执行一些工作。 (60秒)

为此,我使用了“ RxJava-Observable.interval”。

Observable.interval(0L, 60, TimeUnit.SECONDS, Schedulers.io())
        .subscribe { 
            // do something
        }

但是实际上,它的工作方式并不完全像...

2020-03-12 11:27:21.771
2020-03-12 11:28:21.787

大约有0.016秒的延迟。没关系,这是合理的...

我想知道的是...如果设备的性能越来越低...延迟会超过1或2秒吗?

2020-03-12 11:27:21.771
2020-03-12 11:28:22.787   // <-- 1.016sec delay, is it possible?

如果可能发生...我该如何解决?解决方案可以更改调度程序吗?

android performance rx-java rx-java2
1个回答
0
投票

Java环境中事件的调度可能会有所延迟;您几乎永远不会因延误而一见倾心。问题在于底层操作系统的时钟分辨率可能不超过10毫秒。在这里,您看到大约16毫秒的抖动,这并不奇怪。 这不仅是RxJava的问题。

如果您阅读了有关睡眠,计时器等的平台文档,则会看到一些注意事项和警告。通常,文档会说它将在给定时间内至少休眠。

通常,您必须确定应用程序可以支持多少漂移。然后在足够的时间间隔内进行测试(一个样本是不合理的,但可能是10,000个)。

您可以在Understanding RxJava Timer, Delay, and Interval Operators中找到更多信息>

© www.soinside.com 2019 - 2024. All rights reserved.