Size: a a a

Android Architecture

2020 September 14

GK

Gen K in Android Architecture
Jorik Fat
Добрый вечер. В проекте реализован чат через dirtyChecking (проверка каждые 15 секунд новых сообщений). Эта логика обработки должна идти в domain или repository слое?
в перспективе возможен переход на webSocket, но пока имеем то, что имеем
Я бы в домен сделал модель на шаблоне observable. Об изменениях она оповещает подписчиков (в данном случае UI - окна чата). В слое репозитория таймер, который опрашивает бэк и в случае новых сообщений обновляет модель в домене. Логику обработки сообщений пишем через TDD (юнит-тесты) в доменной модели.
источник

GK

Gen K in Android Architecture
При переходе на websocket в основном коде ничего не меняется. Достаточно только переделать репозиторий под другой протокол обмена с бэком.
источник

АП

Анатолий Петров... in Android Architecture
Всем привет. Может кто-нибудь подсказать про практику использования DTO между слоями приложения, интересует Достоинства и Недостатки данного подхода именно в Android разработке.
Обычно использую 4 модуля в приложении:
1. app
2. common
3. domain
4. data
Хочу между app и domain иметь различные объекты, но возникает вопрос.. как быть с LiveData, если я возвращаю LiveData с Room запроса, как её промапить?
источник

GK

Gen K in Android Architecture
Такое использование LiveData для чистой архитектуры не подходит. В чистой архитектуре LiveData имеет смысл только в связке ViewModel - UI (fragment/activity), т.е. в презентационном слое. Проектируя domain, держи всегда в голове мультиплатформу.
источник

GK

Gen K in Android Architecture
LiveData с Room - это для чуваков, которые раньше все впихивали в код фрагментов, а теперь впихуют во ViewModel.
источник

QH

Quantum Harmonizer in Android Architecture
Gen K
LiveData с Room - это для чуваков, которые раньше все впихивали в код фрагментов, а теперь впихуют во ViewModel.
как будто что-то плохое 🤔
источник

GK

Gen K in Android Architecture
Анатолий Петров
Всем привет. Может кто-нибудь подсказать про практику использования DTO между слоями приложения, интересует Достоинства и Недостатки данного подхода именно в Android разработке.
Обычно использую 4 модуля в приложении:
1. app
2. common
3. domain
4. data
Хочу между app и domain иметь различные объекты, но возникает вопрос.. как быть с LiveData, если я возвращаю LiveData с Room запроса, как её промапить?
источник

АП

Анатолий Петров... in Android Architecture
Gen K
LiveData с Room - это для чуваков, которые раньше все впихивали в код фрагментов, а теперь впихуют во ViewModel.
Я тоже такого мнения!
источник

АП

Анатолий Петров... in Android Architecture
Gen K
Такое использование LiveData для чистой архитектуры не подходит. В чистой архитектуре LiveData имеет смысл только в связке ViewModel - UI (fragment/activity), т.е. в презентационном слое. Проектируя domain, держи всегда в голове мультиплатформу.
Хороший совет, спасибо
источник

АП

Анатолий Петров... in Android Architecture
Спасибо за статью
источник

АП

Анатолий Петров... in Android Architecture
Можете посоветовать по стэку, что лучше использовать.
Архитектура приложения - MVVM
Room
Dagger 2
Retrofit 2
Picasso

Буду рад узнать, как делать правильней. Спасибо
источник

АП

Анатолий Петров... in Android Architecture
Gen K
Такое использование LiveData для чистой архитектуры не подходит. В чистой архитектуре LiveData имеет смысл только в связке ViewModel - UI (fragment/activity), т.е. в презентационном слое. Проектируя domain, держи всегда в голове мультиплатформу.
Т е в домене не должно быть Android  зависимостей?
источник

ES

Egor Sigolaev in Android Architecture
Анатолий Петров
Т е в домене не должно быть Android  зависимостей?
Нет
источник

АП

Анатолий Петров... in Android Architecture
А как же быть с такими задачами, например как чтение файла из assets?
источник

ES

Egor Sigolaev in Android Architecture
Анатолий Петров
А как же быть с такими задачами, например как чтение файла из assets?
А что там надо для чтения? Контекст?
источник

ES

Egor Sigolaev in Android Architecture
Анатолий Петров
А как же быть с такими задачами, например как чтение файла из assets?
Мне кажется чтение ассетов это уровень дата слоя. Плюс можно же через di прокинуть контекст куда надо.
источник

АП

Анатолий Петров... in Android Architecture
Assets, да, скорее уровень daya. А к примеру, нужно получить текущую геолокацию или проверить, включён ли wifi. В таком случае это же уровень domain?
Т е не получиться делать модуль domain как java library (без android). Или нужно по-другому мыслить?
источник

ES

Egor Sigolaev in Android Architecture
Анатолий Петров
Assets, да, скорее уровень daya. А к примеру, нужно получить текущую геолокацию или проверить, включён ли wifi. В таком случае это же уровень domain?
Т е не получиться делать модуль domain как java library (без android). Или нужно по-другому мыслить?
Это не домейн, это presentation слой, скорее всего
источник

ES

Egor Sigolaev in Android Architecture
Анатолий Петров
Assets, да, скорее уровень daya. А к примеру, нужно получить текущую геолокацию или проверить, включён ли wifi. В таком случае это же уровень domain?
Т е не получиться делать модуль domain как java library (без android). Или нужно по-другому мыслить?
Domain слой - это юзкейсы, маперы, конвертеры, утилы, хелперы и прочие вещи. Думаю так понятнее.
источник

ES

Egor Sigolaev in Android Architecture
Я сам еще бывает путаю слои, но уже более менее понятнее становится.
источник