我正在开发一个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?
如果可能发生...我该如何解决?解决方案可以更改调度程序吗?
Java环境中事件的调度可能会有所延迟;您几乎永远不会因延误而一见倾心。问题在于底层操作系统的时钟分辨率可能不超过10毫秒。在这里,您看到大约16毫秒的抖动,这并不奇怪。 这不仅是RxJava的问题。
如果您阅读了有关睡眠,计时器等的平台文档,则会看到一些注意事项和警告。通常,文档会说它将在给定时间内至少休眠。
通常,您必须确定应用程序可以支持多少漂移。然后在足够的时间间隔内进行测试(一个样本是不合理的,但可能是10,000个)。
您可以在Understanding RxJava Timer, Delay, and Interval Operators中找到更多信息>