Size: a a a

Android Architecture

2020 September 02

KD

Konstantin Dovnar in Android Architecture
Igor
А можно узнать юзкейс?
Какой-нибудь визард авторизации, например
источник

AD

Aleksey D. in Android Architecture
MIDERY
Да, конечно.
К примеру, у нас есть приложение с каталогом товаров и фильтрами-сортировками для этого каталога, открывающимися отдельными экранами. Причем каталоги могут открываться друг за другом, поэтому синглтон для шаринга данных не подойдёт.
передавать фильтр через аргументы разве не достаточно?
источник

M

MIDERY in Android Architecture
Aleksey D.
а Hilt все компоненты от корневого наследует?
источник

M

MIDERY in Android Architecture
Судя по этой схемке с android devs - да
источник

M

MIDERY in Android Architecture
Aleksey D.
передавать фильтр через аргументы разве не достаточно?
В некоторых случаях - можно, и это будет работать. Но бывают кейсы, когда фильтры не положить в bundle из-за слишком большого их количества (когда все бренды магазина содержатся в них, например), и в этом случае можем огрести с TransactionTooLargeException.
источник

I

Igor in Android Architecture
MIDERY
В некоторых случаях - можно, и это будет работать. Но бывают кейсы, когда фильтры не положить в bundle из-за слишком большого их количества (когда все бренды магазина содержатся в них, например), и в этом случае можем огрести с TransactionTooLargeException.
Подождите, у вас что Активити? А что произойдёт со скопом, если предыдущие окно умрет.
На первый взгляд как-то сложно получается.
источник

M

MIDERY in Android Architecture
Igor
Подождите, у вас что Активити? А что произойдёт со скопом, если предыдущие окно умрет.
На первый взгляд как-то сложно получается.
Ну, это не особо важно) Были проекты, на которых подобные иерархии экранов - это различные activity, сейчас проект с single-actiity подходом.
Управление жизненным циклом подобного скоупа вручную это действительно сложновато, но в этом кейсе мы получаем только накладные расходы на настройку подобной реализации в самом начале, и нет необходимости в том, чтобы ручками очищать и создавать его на самом экране, как если бы мы хранили подобные данные в синглтоне.
источник
2020 September 03

АН

Александр Назаров... in Android Architecture
Nikita Tipun
Ну вот, а если прокидывать дто напрямую из рума в ВМ, то получается будет зависимость на дата слой)
Но этот слой это что-то абстрактное. Всмысле если мы делаем в одном модуле то ничто не мешает во ВМ использовать румовские ентити. Слои ж нужны для случая смены бд, а это не очень аргумент в случае с андроид
??
источник

NT

Nikita Tipun in Android Architecture
Александр Назаров
Но этот слой это что-то абстрактное. Всмысле если мы делаем в одном модуле то ничто не мешает во ВМ использовать румовские ентити. Слои ж нужны для случая смены бд, а это не очень аргумент в случае с андроид
??
Слои нужны для разделения логики. Потому что если вы будете прокидывать сущности Рума в ВМ, то ваш же кейс со сменой БД сломает вашу логику, т.к. сущности спокойно могут поменяться и вместо того чтобы просто поменять их маппинг в одном месте, вам придется выискивать где же вы в ВМ на них завязались и менять во многих местах. Опять же если проект маленький, то такое может и прокатить, но в среднем или большом я бы так уже не делал
источник

АН

Александр Назаров... in Android Architecture
Nikita Tipun
Слои нужны для разделения логики. Потому что если вы будете прокидывать сущности Рума в ВМ, то ваш же кейс со сменой БД сломает вашу логику, т.к. сущности спокойно могут поменяться и вместо того чтобы просто поменять их маппинг в одном месте, вам придется выискивать где же вы в ВМ на них завязались и менять во многих местах. Опять же если проект маленький, то такое может и прокатить, но в среднем или большом я бы так уже не делал
Но если они нужны для кейса когда мы меняем базу то такого кейса никогда почти не происходит.  если только для разделения логики то бывают случаи когда нужно рум entity прокинуть без изменения в домен модель и тут получается усложнение. плюс если в entity что-то меняется добавляется то это же нужно сделать в доменной модели, а это опять усложнения. Выходит это решение приводит к большему количеству кода и большим действиям для его поддержания и плюс от этого решения - случай, который когда-то может быть произойдёт и маловероятно что произойдет
источник

NT

Nikita Tipun in Android Architecture
Александр Назаров
Но если они нужны для кейса когда мы меняем базу то такого кейса никогда почти не происходит.  если только для разделения логики то бывают случаи когда нужно рум entity прокинуть без изменения в домен модель и тут получается усложнение. плюс если в entity что-то меняется добавляется то это же нужно сделать в доменной модели, а это опять усложнения. Выходит это решение приводит к большему количеству кода и большим действиям для его поддержания и плюс от этого решения - случай, который когда-то может быть произойдёт и маловероятно что произойдет
Ну больше количество кода это дроубеки клина, что тут поделать. Я говорю, что нужно отталкиваться от ситуации, если проект небольшой, то нет смысла городить миллион интеракторов, мапперов и прочего. Опять же к кейсу с бд, то конечно бд на андроиде меняется не часто, но самим сущностям бд меняться ничего не запрещает. Если брать ваш пример с изменением домейна, то менять бы пришлось в любом случае, только если прокидывать напрямую, то это пришлось бы делать в слое презентации. Если исходить из логики, что многокодаленьподдерживать, то можно и вьюмоделями в сеть кидаться, но только потом будет тяжело разгребать все это
источник

АН

Александр Назаров... in Android Architecture
Nikita Tipun
Ну больше количество кода это дроубеки клина, что тут поделать. Я говорю, что нужно отталкиваться от ситуации, если проект небольшой, то нет смысла городить миллион интеракторов, мапперов и прочего. Опять же к кейсу с бд, то конечно бд на андроиде меняется не часто, но самим сущностям бд меняться ничего не запрещает. Если брать ваш пример с изменением домейна, то менять бы пришлось в любом случае, только если прокидывать напрямую, то это пришлось бы делать в слое презентации. Если исходить из логики, что многокодаленьподдерживать, то можно и вьюмоделями в сеть кидаться, но только потом будет тяжело разгребать все это
Спасибо за ответы. Я впринципе за разделение в разумных случаях. На работе возникает спор на эту тему и доводов которые описаны здесь кажется недостаточно. Вот я и хотел услышать мнение может есть еще что
источник

NT

Nikita Tipun in Android Architecture
Александр Назаров
Спасибо за ответы. Я впринципе за разделение в разумных случаях. На работе возникает спор на эту тему и доводов которые описаны здесь кажется недостаточно. Вот я и хотел услышать мнение может есть еще что
По поводу споров просто тема опять же довольно холиварная потому что тут присутствует завязанность на ситуацию, а каждый её видит по своему)
источник

DS

Dmitry Sokolov in Android Architecture
С чего начать изучение архитектуры приложений? Для Android разработки
источник

PA

Pavel Aleksandrov in Android Architecture
Dmitry Sokolov
С чего начать изучение архитектуры приложений? Для Android разработки
С вопроса себе, зачем ты хочешь изучать архитектуру и что ты от этого ждёшь
источник

AT

Alexander Taran in Android Architecture
Dmitry Sokolov
С чего начать изучение архитектуры приложений? Для Android разработки
источник

AD

Aleksey D. in Android Architecture
Pavel Aleksandrov
С вопроса себе, зачем ты хочешь изучать архитектуру и что ты от этого ждёшь
классика - найти себе работу
источник

DS

Dmitry Sokolov in Android Architecture
Aleksey D.
классика - найти себе работу
во всех вакансиях требования - clean, mvvm, mvp, несколько приложений в сторе, несколько лет опыта коммерческой разработки.
источник

DS

Dmitry Sokolov in Android Architecture
+ android разработка развивается слишком быстро - пару лет назад использовали совсем другие технологии, нежели сейчас.
источник

Т

Тони in Android Architecture
Dmitry Sokolov
во всех вакансиях требования - clean, mvvm, mvp, несколько приложений в сторе, несколько лет опыта коммерческой разработки.
Начать с гугла
Погугли - сделай пару примеров по туториалам
Потом начни делать свой проект(какой-нибудь) с использованием архитектуры которой ты изучил

+- так
источник