Size: a a a

Android arch. components

2019 March 15

AA

Alidibir Akhbulatov in Android arch. components
Узнавал раньше об этом тоже и везде говорилось, что делается в именно UI, но может кто пробовал NavController использовать через вьюмодель)
источник

D

Dmitry in Android arch. components
Из канала по подкасту, чтобы не оффтопить там, и не обсуждать  с каждым заинтересованным в отдельной личке, перенесу сюда мой ответ на вопрос Йонатана - какие же есть недостатки компонент на примере лайвдаты и колбека жизненного цикла.
источник

D

Dmitry in Android arch. components
В канале подкаста просили не обсуждать, отвечу тут по компонентам
Проблема жизненного цикла - избыточность, фреймворк пересоздает не только вьюшку, ну и управляющий ею контроллер на каждый чих - когда телефон повернули, когда размер окошка изменили и т.п.. Решением проблемы было бы изменение поведения фреймворка, чтобы в 99% случаях, где это нафиг не надо, вьюшка бы не пересоздавалась. Просто сделайте межур и лейаут заново по умолчанию и все.
Вместо решения проблемы нам дают удобный колбек, который сообщает, когда состояние меняется.
Колбек хороший, полезный, но в 99% случаях это просто костыль для проблемы, которой изначально не должно быть, и которая почему-то не исправляется во фреймворке.

Касательно лайвдаты, ее проблема - то что это еще одна монада, не очень понятно, для чего. Ну кроме того, что она интегрируется с вышеупомянутым колбеком жизненного цикла, который можно интегрировать вообще куда угодно.
Если у меня реактивное приложение, то логично использовать сразу Observable из реактивных потоков, без промежуточных конвертаций (просто подружите его в лайвсайклом!).
Большинство кода, с которым я работал - это декларативный код. И монады посреди декларативного кода на мой непривыкший вгляд очень ухудшают читаемость и понимание. Гораздо логичнее было бы решить проблему интеграции с лайвсайклом в презентере/вьюмодели без дополнительных кастомных монад под это дело. Что, впрочем, люди и делали до лайвдаты.
К тому же оно довольно странно реализованно. Например, есть специальная лайвдата для бесконечных списков. Так вот в джавадоке к ней написано, что при любом изменении таблицы в базе, эта лайвдата просто будет кидать эксепшн. Хотя очевидно, что надо ей какой-то колбек дополнительный дергать, мол перезапроси список.

В целом библиотека нормальная, но не без недостатков, главная претензия к ней - что она пушится гуглом, и теперь народ пихает ее в проекты, как будто это часть фреймворка, не задумываясь.

Я считаю, что ломать обратную совместимость как эпл направо и налево - плохо. Хранить ужасное легаси поведение десятилетиями - ничуть не лучше. Должен быть здоровый балланс.
источник

D

Dmitry in Android arch. components
И я до вечера не буду тут отвечать, поработать надо блин -)
источник

SB

Simon Belialov in Android arch. components
Чат потихоньку растет)
источник

ST

Sasha Tainyuk in Android arch. components
Simon Belialov
Чат потихоньку растет)
Толку то. Все молчат. (
источник

IR

Ilya Ryabchuk in Android arch. components
Sasha Tainyuk
Толку то. Все молчат. (
Видимо у всех все хорошо работает 😁
источник

КР

Кирилл Романенко in Android arch. components
Ilya Ryabchuk
Видимо у всех все хорошо работает 😁
++
источник

КР

Кирилл Романенко in Android arch. components
Это как когда выпускают рейтинги языков программирования на основе запросов в гугл. А как по мне - так чем лучше язык и его окружение, тем меньше ты гуглишь.
источник
2019 March 16

K

Kopusha in Android arch. components
[Экспериментал] Принесли inSaveInstanceState во ViewModel.
https://developer.android.com/topic/libraries/architecture/viewmodel-savedstate
источник

AP

Alexey Pushkarev in Android arch. components
Ну пиздец
источник

AP

Alexey Pushkarev in Android arch. components
Как его теперь тестировать?
источник

K

Kopusha in Android arch. components
Конкретно по ViewModel, Джейк пенял, что сделали через жопу с этим монструозным фактори и дурацким названием "ViewModel". Хотя должна была быть тупо какая-то хеш-таблица в памяти, которая привязана в лайфсайклу и которую ты бы мог дергать из своего ViewModel/Presenter или что там у тебя. "Положил-вынул", все. Андроид девы не умеют в композицию, только в наследование и то криво.
источник

K

Kopusha in Android arch. components
В итоге конструктор спрятан, зависимости хрен засунешь, если без DI фремворка, только прокидывать в этот фактори и плодить их под каждый чих. Ну, типа nice try, хоть retained fragment спрятали, но садись 3.
источник

MR

Max Rovkin in Android arch. components
Я вот тоже посмотрел на фэктори, и забил, в итоге у меня вьюмодель провайдится через di
источник

NB

Nikita Bulygin in Android arch. components
Alexey Pushkarev
Как его теперь тестировать?
А почему это мешает тестированию ? Я так понял просто колбэк ещё один добавили
источник

AP

Alexey Pushkarev in Android arch. components
Nikita Bulygin
А почему это мешает тестированию ? Я так понял просто колбэк ещё один добавили
Ну вьюмодель не зависит от бандла теперь, не?
источник

NB

Nikita Bulygin in Android arch. components
А во ViewModel есть бандо?
источник

NB

Nikita Bulygin in Android arch. components
*бандл
источник

K

Kopusha in Android arch. components
Дополнение про недостатки LiveData. Если б они ее хоть во вью оставляли, но LiveData это просто rx выродок, который испоганит тебе все что можно, если поверишь видосам от гугла и начнешь пихать ее в ДБ или нетворкинг. Через час как заменишь rx на livedata захочется скомбинировать два стрима. И тут сюрприз, в rx под 200 операторов, а в LiveData добавили .map{} extension в альфа версию ktx. В итоге начинают лепиться дикие костыли с лапшой из mediators и тд. По сути сам свой rx пишешь. Плюс привязка к mainthread и отсутствие канала для исключений...
источник