Rx Java Observable.interval может быть отложено на Android? - PullRequest
0 голосов
/ 12 марта 2020

Я занимаюсь разработкой приложения Android. Это должно делать некоторую работу каждые 1 минуту. (60 секунд)

Чтобы сделать это, я использовал «Rx Java - 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 с c. Но это нормально, это разумно ...

То, что я хочу знать, это то, что ... Если производительность устройства ниже и ниже ... Может произойти задержка более 1 или 2 секунд ?

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

Если это может произойти ... как я могу это исправить? Может ли изменение планировщика быть решением?

1 Ответ

0 голосов
/ 14 марта 2020

Планирование событий в среде Java подвержено задержкам; Вы почти никогда не получите места для задержки. Проблема в том, что разрешение часов базовой операционной системы, вероятно, не лучше, чем 10 миллисекунд. Здесь вы видите дрожание около 16 миллисекунд, что неудивительно. Это не только проблема с Rx Java.

Если вы прочитаете документацию для вашей платформы, где обсуждаются сны, таймеры и т. Д. c, вы увидите, что есть несколько заметок и предупреждений. Обычно в документации говорится, что в течение определенного времени она будет , по крайней мере, .

В общем, вы должны определить, какой дрейф вы можете поддерживать в своем приложении. Затем выполните тестирование в течение достаточного интервала (одна выборка не является разумной, но может быть и 10 000).

Подробнее об этом можно узнать в Понимание Rx Java Операторы таймера, задержки и интервала

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...