// VM's member
var job: Job? = null
// ...
// called from onChange
viewModelScope.launch {
job?.cancel()
job = launch {
delay(300)
// do validation
job = null
}
}
viewModelScope из отдельной депенденси с ktx viewmodels вроде
он есть
а джоб не надо нигде создавать?
job = launch
а зачем ты в лаунче его кенселишь?
мне так посоветовали сделать 🙂
обосновали зачем?)
нет, но я не просил, хотя тоже смутило
я такого просто не видел. и в этом смысла не вижу
потому каждый ввод символа означает, что процесс ввода еще не завершен и старые таски нужно отменить, а сработать должна только последняя
А зачем внутри viewModelScope.launch запускать еще один launch? Почему не принять за job = viewModelScope.launch и его уже отменять или что то еще с jobом делать?
я не знаю…
Ну если внутри будет асинхронный код, время выполнения которого мы не сможем предсказать, то при нескольких выховах подряд может сначала выполниться третий, а уже после него - второй выхов (как пример). И в результате в ливдату сначала прилетит корректное последнее состояние, а потом уже неконсистентное второе и останется результат именно второго вызова, что некорректно.
ну просто у тебя уже запустилась корутина через viewModelScope.launch. Если бы там внутри надо было несколько задач параллельно сделать, то езе куда ни шло, но так странно, но может я чего то не догоняю конечно, потому решил уточнить
подскажите как бы Вы это сделали? https://t.me/android_ru/800624
Тут надо определиться - что значит "Закончит писать" - теряется фокус у editText, пользователь не вводит ничего уже какое то время, скрывается клавиатура, нажимается enter на клавиатуре?
Пользователя встречает фрагмент с формой для входа. Он вводит данные в верхний едиттекст (имя пользователя), далее: * ЛИБО через некоторое время после того, как он закончит (к примеру 1.5 секунды) * ЛИБО когда он нажимает Enter/Return и переходит на следующий edittext * ЛИБО когда он нажимает пальцем в поле нижнего edittext (пароль) идет проверка регулярным выражением И в случае, когда оно удовлетворяет паттерн регулярки, дать ему знать о том что такое имя пользователя потенциально есть в базе (это уже я сам). В ином случае, я показываю edittext.error.
Ну вот и ставь лиснеры на эти события)
сделал такую же с Job-ой, пасиба @ceh9_dev
какую-то статью/пост зафигачил? такими приколами с таймером еще мой дед пользовался, х3 кому ты там Америку открыл
Обсуждают сегодня