Size: a a a

Android arch. components

2019 November 09

ST

Sasha Tainyuk in Android arch. components
Можно, но в итоге мне кажется этот FooLogic может превратиться в монстра, который могет всё. А лайфдата вроде для этого и делалась.

И что за кейс такой, когда надо одну вм в другую присунуть?)
источник

D

Danil Yudov in Android arch. components
Kopusha
да.. ну, и он там прямо пишет, что не хочет VM использовать и писать "много кода". Т.е. явно будет данные бандлами между фрагментами кидать. А это зашквар в 2020-м
зашквар, шта? как ты передаёшь аргументы запуска в фрагмент?
источник

K

Kopusha in Android arch. components
есть разница между передать userId и потом достать юзера из репозитория, как single source of trust или передать весь объект, может даже сразу в разные места, и потом дебажить, как так вышло, что в одном месте он уже изменился, а в другом еще старый.
источник

K

Kopusha in Android arch. components
Sasha Tainyuk
Можно, но в итоге мне кажется этот FooLogic может превратиться в монстра, который могет всё. А лайфдата вроде для этого и делалась.

И что за кейс такой, когда надо одну вм в другую присунуть?)
в монстра не должен, это только для мелких вещей, типа подержать где-то временные данные какой-то формы, если она заполняется юзером на трёх экранах. А иначе все через Repository, и shared VM не нужно.
источник

K

Kopusha in Android arch. components
А одну VM в другую тебе очень быстро захочется, если будешь shared VM юзать. Shared для общей логики, а кроме нее у фрагмента часто своя собственная VM и потом их надо заставить между собой общаться. Упс, вот и какашечка скатывается...
источник

D

Danil Yudov in Android arch. components
Kopusha
есть разница между передать userId и потом достать юзера из репозитория, как single source of trust или передать весь объект, может даже сразу в разные места, и потом дебажить, как так вышло, что в одном месте он уже изменился, а в другом еще старый.
по ситуации. если данные могут измениться, то да. а если это какой-то объект полученный от сервера, который мутировать не может, то его можно и целиком пихнуть в бандл
источник

K

Kopusha in Android arch. components
еретик! Чтоб вью знала, что объект с сервера пришел, и еще что-то про жизненный цикл модели, изменится, не изменится... Клин смотрит на тебя как на гавно!
источник

K

Kopusha in Android arch. components
с этого и начинается, "да, палюбэ тут не изменится". И через месяц твой кореш по команде "ну, ок, я только тут разок. Один раз не пидорас".))
источник

D

Danil Yudov in Android arch. components
та не, вью знать не будет. объект сразу же должен уйти в конструктор презентера или вью модели или чего-нибудь там ещё))
источник

ST

Sasha Tainyuk in Android arch. components
Kopusha
А одну VM в другую тебе очень быстро захочется, если будешь shared VM юзать. Shared для общей логики, а кроме нее у фрагмента часто своя собственная VM и потом их надо заставить между собой общаться. Упс, вот и какашечка скатывается...
Ну что-то в этом есть))
И наверное даже было бы интересно посмотреть на это.
источник

GK

Georgiy Khloptov in Android arch. components
Kopusha
А одну VM в другую тебе очень быстро захочется, если будешь shared VM юзать. Shared для общей логики, а кроме нее у фрагмента часто своя собственная VM и потом их надо заставить между собой общаться. Упс, вот и какашечка скатывается...
Фишка в том, что если у тебя есть shared VM, то частные VM для экранов или частей экранов либо совсем не нужны, либо должны быть объектами внутри этой VM
источник

GK

Georgiy Khloptov in Android arch. components
Одно из последствий того, что то что названо ViewModel в android ей по сути не является
источник
2019 November 10

V

Vladimir in Android arch. components
Как можно из LiveData<PagedList<X>> сделать LiveData<PagedList<Y>>?
источник

V

Vladimir in Android arch. components
На уровне вьюмодели
источник

K

Kopusha in Android arch. components
.map{} ?
источник

YW

Yakov Weber in Android arch. components
Kopusha
но если серьезно, shared VM плохо скейлится, как оказалось. Потому что одну VM в другую не засунешь, приходится изворачиваться лайвдатами, связывать их где-то во фрагменте. Проще создать третий класс, какой-то FooLogic с расшареным стейтом и воткнуть его в нужные VM.
Вот делаю так и вроде не плохо, но попахивает even bus    от рх
источник

K

Kopusha in Android arch. components
причём тут event bus. Map это обычная композиция функций, вида f'=f°g (или f(g(x)))
источник

K

Kopusha in Android arch. components
это даже к лайвдате не относится, так или иначе ты это делаешь постоянно 🙂
источник

YW

Yakov Weber in Android arch. components
Kopusha
это даже к лайвдате не относится, так или иначе ты это делаешь постоянно 🙂
Я про подход, в рх так же делают с релаями
источник
2019 November 11

K

Kopusha in Android arch. components
сорян, чувак, но у тебя какая-то каша) Relay это observable и consumer одновременно, к изменению типа ивента не относится от слова никак. В rx, конечно, тоже есть map, потому что LD, Flow, Rx это все стримы и без map они бесполезны. А event bus я вообще хз, ты как-будто эники-бэники считал и уже на что попадет.
источник