Size: a a a

Android Architecture

2020 September 03

DK

Denis Koval in Android Architecture
а если случится так, что какому-то интерактору понадобится потрогать suspend функцию другого интерактора, при этом первый интерактор не suspend..
источник

P

Pavel in Android Architecture
Если в интеракторе нужно что-то в параллель делать (async()), то оно должно запускаться из coroutineScope(). Соответственно, оно к тому же scope привязывается, из которого вызвана suspend-функция.

    suspend fun doSmth() = coroutineScope {
          async {
             //
          }
   }
источник

P

Pavel in Android Architecture
Denis Koval
а если случится так, что какому-то интерактору понадобится потрогать suspend функцию другого интерактора, при этом первый интерактор не suspend..
По идее, у первого интерактора тоже должна быть функция suspend. Если нужно что-то запустить совсем асинхронно без привязки к текущему scope, то этот scope лучше передать в этот интерактор и из него запускать.
источник

DK

Denis Koval in Android Architecture
спасибо! выручили!
источник

KR

Kirill Rozov in Android Architecture
Прямо сейчас обсуждаем Dagger Hilt https://www.youtube.com/watch?v=4di2TTqeCrE
источник

СС

Саша Стрельцов... in Android Architecture
всем привет, объясните пожалуйста в чем ошибка
источник

AK

Alexander Kobozev in Android Architecture
Саша Стрельцов
всем привет, объясните пожалуйста в чем ошибка
final str не инициализируется до вызова super(str), но это скорее вопрос для @javastart
источник

СС

Саша Стрельцов... in Android Architecture
Alexander Kobozev
final str не инициализируется до вызова super(str), но это скорее вопрос для @javastart
да, я уже понял
источник

JF

Jorik Fat in Android Architecture
Добрый вечер. На каком слое должны лежать мапперы из БД?
(в слое самого источника или на уровне репозитория)
источник

QH

Quantum Harmonizer in Android Architecture
Jorik Fat
Добрый вечер. На каком слое должны лежать мапперы из БД?
(в слое самого источника или на уровне репозитория)
На слое SQL-запроса.
источник

JF

Jorik Fat in Android Architecture
спасибо
источник

JF

Jorik Fat in Android Architecture
Я правильно понимаю что DataSource должен отдавать данные в виде, который используется на уровне Repository (или выше)?
источник

NM

Nick Marchuk in Android Architecture
Jorik Fat
Я правильно понимаю что DataSource должен отдавать данные в виде, который используется на уровне Repository (или выше)?
Поскольку репозиторий знает про каждый из датасорсов, логично делать маппинг в нём, а уже из него возвращать нужную домейну модель, лично я встречал чаще всего именно такой подход
источник

JF

Jorik Fat in Android Architecture
Nick Marchuk
Поскольку репозиторий знает про каждый из датасорсов, логично делать маппинг в нём, а уже из него возвращать нужную домейну модель, лично я встречал чаще всего именно такой подход
вот тут у меня проблема и пришла. Api возвращает ApiEntity, по этой логике db может возвращать DbEntity, но DbEntity это может быть и Cursor (а repositytory не должен ничего знать про Cursor т.к. это Android-зависимость)
не могу понять, где допускаю ошибку в размышлениях
источник

KD

Konstantin Dovnar in Android Architecture
Jorik Fat
вот тут у меня проблема и пришла. Api возвращает ApiEntity, по этой логике db может возвращать DbEntity, но DbEntity это может быть и Cursor (а repositytory не должен ничего знать про Cursor т.к. это Android-зависимость)
не могу понять, где допускаю ошибку в размышлениях
Реализация репозитория может знать об андроид-сущностях. Интерфейс (читай контакт) не должен знать о них.
источник

QH

Quantum Harmonizer in Android Architecture
Jorik Fat
вот тут у меня проблема и пришла. Api возвращает ApiEntity, по этой логике db может возвращать DbEntity, но DbEntity это может быть и Cursor (а repositytory не должен ничего знать про Cursor т.к. это Android-зависимость)
не могу понять, где допускаю ошибку в размышлениях
> DbEntity это может быть и Cursor
а это как?
источник

KD

Konstantin Dovnar in Android Architecture
Но в целом довольно странно возвращать курсор из дбдатасурса
источник

JF

Jorik Fat in Android Architecture
получается, что Cursor != DbEntity?
источник

JF

Jorik Fat in Android Architecture
и маппинг из DbSource происходин в нем самом?
источник

GK

Gen K in Android Architecture
Jorik Fat
Я правильно понимаю что DataSource должен отдавать данные в виде, который используется на уровне Repository (или выше)?
Да. Репозиторий не должен париться о внутренностях DataSource. Его задача шлюзовать данные между локальным хранилищем, удаленным хранилищем и ядром (domain). И преобразованием данных должны заниматься классы хранилищ. Лучше всего сразу в тип, используемый ядром. Тогда репозиторий становится до безобразия простым. Нужно тебе подрубить Room, ORM, SQLite, JSON, Protobuf или еще что, тебе не придется переписывать репозиторий. Особенностями протоколов пусть занимаются те слои, в которых это все происходит. Их задача получить, сохранить данные через соответствующие протоколы и подготовить их в вид, удобный для более внутренних слоев.
источник