Size: a a a

Android Architecture

2020 July 08

КР

Кирилл Романенко... in Android Architecture
Alexandr Ermolenko
https://github.com/Mishkun/Puerh
так то фреймворк который в авто ру используется вроде бы вот это. Но его, Михаил не обновлял уже достаточно долго, хотя и обещал заняться этим, надо его просто попинывать, видимо 🌚
Жаль, не мпп.( Не модно, не молодёжно.
источник

NM

Nick Marchuk in Android Architecture
Максим
Например, можно взять вьюмодель, сделать ей стейт, и список асинхронных задач с их стейтом, и такую вьюможель использовать где угодно... с разным функционалом и стейтом. Тогда совершенно верно, МВВМ будет частным случаем MVI
Что-то все стали забывать что главная особенность MVVM это датабиндинг
источник

AI

Arkadii Ivanov in Android Architecture
Aleksey D.
а почему нельзя через LiveData (что угодно другое) кидать актуальное состояние?
Можно LiveData, только представление не должно знать об этом ничего, в MVI.
источник

AI

Arkadii Ivanov in Android Architecture
Можно LiveData, можно StateFlow, BehaviorSubject, или свой велосипед
источник

AD

Aleksey D. in Android Architecture
Arkadii Ivanov
Можно LiveData, только представление не должно знать об этом ничего, в MVI.
не могу уловить существенную разницу между
fun render(state: FeatureState) = when (state) {
 // …
}


и  model.observe(viewLifecycleOwner) { state -> /* … */ }
источник

OP

Oleg Pchelkin in Android Architecture
Максим
если вкратце, то MVI может быть не реактивный, то есть вы можете всегда знать текущий стейт, а так же он может работать с более сложным состоянием и событиями.
Спасибо, попробуем)
источник

IS

Ivan Sablin in Android Architecture
на свой предыдущий вопрос не отвечает никто, попробую перефразровать, как "подменить" livedata? Кейс такой, вью обсервит какую-то лайвдату, в это время в модели запускается асинхронная функция, которая возвращает такую же livedata с тем же типом. Как начать обсервить возвращенную лайвдаты буз лишних телодвижений?
источник

AI

Arkadii Ivanov in Android Architecture
Aleksey D.
не могу уловить существенную разницу между
fun render(state: FeatureState) = when (state) {
 // …
}


и  model.observe(viewLifecycleOwner) { state -> /* … */ }
Принципиальная разница в ответственности. В MVI представление - это функция от Состояния, и источник событий. Связывание не является ответственностью представления.
источник

AI

Arkadii Ivanov in Android Architecture
Если сделать одну LiveData и связывание вынести из представления - получится MVI.
источник

AD

Aleksey D. in Android Architecture
Arkadii Ivanov
Если сделать одну LiveData и связывание вынести из представления - получится MVI.
ладно, на калеке-MVI тоже можно ездить 🙄
источник

AI

Arkadii Ivanov in Android Architecture
Aleksey D.
ладно, на калеке-MVI тоже можно ездить 🙄
Можно) никто не спорит. Главное делать прилы и грести бабло.
источник

AD

Aleksey D. in Android Architecture
Arkadii Ivanov
Можно) никто не спорит. Главное делать прилы и грести бабло.
жиза 👍
источник

P

Pavel in Android Architecture
Ivan Sablin
на свой предыдущий вопрос не отвечает никто, попробую перефразровать, как "подменить" livedata? Кейс такой, вью обсервит какую-то лайвдату, в это время в модели запускается асинхронная функция, которая возвращает такую же livedata с тем же типом. Как начать обсервить возвращенную лайвдаты буз лишних телодвижений?
Switchmap?
источник

АЕ

Алексей Ершов... in Android Architecture
Ivan Sablin
на свой предыдущий вопрос не отвечает никто, попробую перефразровать, как "подменить" livedata? Кейс такой, вью обсервит какую-то лайвдату, в это время в модели запускается асинхронная функция, которая возвращает такую же livedata с тем же типом. Как начать обсервить возвращенную лайвдаты буз лишних телодвижений?
я бы не стал использовать лайвдату вообще нигде кроме ViewModel-View, тогда и обзервить не надо новую, просто внутри VM пушить в неё элементы откуда-то.
источник

IS

Ivan Sablin in Android Architecture
У меня вот такая вот штука в репозитории.
источник

IS

Ivan Sablin in Android Architecture
Ну тоесть мне сам билдер для пагинации возвращает лайвдату
источник

IS

Ivan Sablin in Android Architecture
Все бы ничего если бы это была синхронная функция, но suspend написал для того чтобы в ней обращаться к базе
источник

M

Malik in Android Architecture
У меня приложение разделено на 3 слоя
view-domain-data. Два слоя view и data являются android-specific. В data у меня есть LocationProvider, который работает с местоположением пользователя. В нем есть метод помеченный аннотацией RequiresPermission, которая из либы Android. Чтобы протащить данные о местоположении через domain, мне методы в domain тоже приходится помечать этой аннотаций, но тогда я тащу androidx:annotation в domain слой, чего очень не хочется делать. Что посоветуете?
источник

EC

Evgeny Cherkasov in Android Architecture
Arkadii Ivanov
Принципиальная разница в ответственности. В MVI представление - это функция от Состояния, и источник событий. Связывание не является ответственностью представления.
А кто должен вызывать эту функцию?
источник

IS

Ivan Sablin in Android Architecture
окей, еще перефразирую, как правильно обсервить лайвдату, которая приходит асиинхронно?
источник