Необходимо немного оптимизировать запросы в приложении Android и разгрузить процессор.
Есть строка поиска со своим слушателем событий на изменение текста в данной строке. Необходимо произвести действие1 (поиск в листе), если данные в строке не менялись более 3 секунд. Действие1 должно производится не при каждом изменении значения строки поиска с задержкой 3 сек, а только один раз, после того как строка изменялась и осталась в таком виде более 3 секунд.
Можно как-то так c помощью rxJava и RxBinding:
Заводим в активити переменные:
long time;
private static final int INTERVAL = 3;
Потом берём EditText и подписываемся на изменения ввода в нём, каждый раз обновляем переменную time и начинаем ждать n секунд. После ожидания проверяем, что текущее время - time больше заданного интервала и только в этом случае что-то делаем.
RxTextView.textChanges(editText)
.doOnEach(text -> time = System.currentTimeMillis())
.flatMap(text -> Observable.timer(INTERVAL, TimeUnit.SECONDS).flatMap(v -> Observable.just(text)))
.observeOn(Schedullers.io())
.subscribeOn(AndroidSchedullers.mainTread())
.filter(text -> (System.currentTimeMillis() - time) >= INTERVAL)
.subscribe(text - > Log.d("TAG", text));
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости