Страницы

Поиск по вопросам

среда, 10 июля 2019 г.

Как отфильтровать паразитные запуски метода по частоте их следования

Лисенер должен запустить метод void go(int param), но если частота следования запусков менее секунды, то это должно считаться паразитным событием. И метод go не должен быть запущен.
Т.е. нужно реализовать метод void noiseFilter(int param), который бы запускал go(param) в случае, если частота генерации событий лисенера менее 1 Герца (не чаще 1 раза в секунду).
Помогите новичку.
P.S. Привязка ко времени не супер критична, так как 1Гц это огромный threshold, который перекрывает паразитную частоту в десятки раз.


Ответ

Статьи про таймер поищи, как вариант. Сам я таймер не использовал - но на мой взгляд решить можно так: Создать в классе флаг, реализовать функцию Drop, которая этот флаг меняет на false. Далее - когда запускается функция, она проверяет флаг, если он false - то можно работать, если true - то выполнение завершается. Если функция может работать, она ставит этот флаг в true и запускает TimerTask, который обнулит этот флаг через секунду с помощью метода Drop.

Комментариев нет:

Отправить комментарий