Странный код. Переменную offlineTimer - onTick будет менять?
нет, если она нулловая, то нужно установить через onEnd статус в sealed class – Hidden, иначе через onTick устанавливать другие статусы
Тогда вроде работать будет ) Но логика требует пояснений... Например, если offlineTimer не null - onEnd никогда не будет вызван. Если честно, я бы расширил многословностью, но добавил бы четкости: if (offlineTimer !=null) { while(true) {....} } else { onEnd() } Тогда и onEnd() наверное можно как-то более подходящим словом назвать
таймер бесконечный, поэтому onEnd там будет обязательно
Зачем таймер через композабл функцию делать?)
delay может исключение кинуть и тогда onEnd не вызовется, надо в try/finally заворачивать
Смотря для чего нужен этот таймер. Не рекомендую использовать такой вариант для проверки на смс код. При выходе с приложения таймер остановится
а как сделать так, чтобы не останавливался?
Сохранять метку времени начала и искать время, в которое должно закончиться
каждую минуту у меня должно отобразиться изменение времени, зач метки? может просто корутину на IO запустить?
Метка начала От нее каждую секунду высчитывать оставшееся время
Типо через хендлер восстанавливать её во ViewModel?
Сохраняйте метку времени начала в преференсах/дата сторе/rememberSaveable В LaunchedEffect проверяйте каждую секунду времени по формуле val time = startTime - nowTime
Как удобно. Главное сохранить метку времени. Если сохранить ее в префах, то при быстром перезаходе пользователь не получит ошибку от бека "дождитесь 60 секунд"
Обсуждают сегодня