Search
Write a publication
Pull to refresh
3
0
Юлий Верткин @yvertkin

андроид разработчик

Send message

Ну статью я удалять не буду, потому что тогда и реклама Вашей статьи пропадет ;)

А если серьезно, то статью я прочитал, но так и не понял как совершенно разные по смыслу и бизнес логике события типа данные об аренде, поступающие каждые 10+n секунд и данные об объектах на карте, поступающие в з-ти от действий пользователя объединить в "семью вложенных состояний"? Если приведете конкретный пример как это сделать, буду очень признателен.

Ну почему одна есть:

val mapUiState by mapViewModel.mapUiState.collectAsStateWithLifecycle() :)

А если серьезно, то работа с Yandex Map SDK для Android достаточно специфична и это не совсем компоуз. Рассказать хотел именно про взаимодействие с ним.

Хм.. “лаунчэффекты или прямую подписку на Flow” не пробовал, но вроде и без этого все неплохо работает.. С UnStable идея действительно хорошая, но решил использовать “неизменяемые коллекции”, а не аннотацию Stable, т.к. дока рекомендует: “If it is possible to make your class stable without an annotation, you should strive to achieve stability that way.”

Отрисовки по слоям в Yandex Map SDK для Android я не нашел. Про современные решения я имел в виду архитектуру Android приложения

Спасибо за "MVVM со стейтами" внёс уточнение. Про debounce ответил выше.

Про delay внутри лямбды и расширения не очень понял, вроде как это стандартное решение.

Прошу прощения, м.б. не совсем понял комментарий по поводу неправильного использования состояния. Выше уже ответил почему не могу отрисовывать все вместе за раз.

Согласен, что в общем плане задержка не самое лучшее решение. Но как я написал в статье, проблема неотрисовки каких-то данных даже без задержки встречается довольно редко, поэтому я очень надеюсь, что флагманы не будут на меня в обиде за такое решение ;)

Для обновления UI я запрашиваю с сервера разные данные (велосипеды, парковки, станции, медленные зоны). Кроме этого раз в 10 сек. я запрашиваю данные об аренде. Все ответы приходят в разное время (а иногда приходит timeout exception). Если ждать получения всех данных и объединять их, пользователь может увидеть обновление экрана через n секунд, что недопустимо.

Про debounce выше ответил.

debounce вместо delay я как раз не могу использовать, т.к. в очереди стоят разные MapUiState с данными по велосипедам, парковкам, станциям, медленным зонам, арендам и т.д. С debounce я потеряю всё :)

Вешать debounce на события с UI на ViewModel мне тоже не нужно, т.к. в Yandex Map SDK CameraListener уже имеет параметр “finished” и событие посылаются на ViewModel не на каждое движение пальца пользователя, а когда он немного притормаживает “неистовый” скролинг.

И да, одинаковые события (например несколько данных по велосипедам) в очереди не появляются, для этого есть другой механизм.

Большое спасибо за неизменяемые коллекции, проапдейтился на них.

Information

Rating
Does not participate
Location
Россия
Registered
Activity

Specialization

Mobile Application Developer
Senior
Android development