Необходимо немного оптимизировать запросы в приложении 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));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пишу программу Телефонная книга и не получаются следующие методыHashMap у меня состоит из класса Юзер и сета Контактов (с номерами телефонов...
есть строка cbr-coa-dic:Osv_Dt_A_10501$dim-int:Nacz_Inostr_Valyuta_Axis/mem-int:Nacz_Valyuta_Rf_Member ее необходимо раздеить по символу $ пробовал делить String[] soch = fsplit( "$"); но деления...