Size: a a a

Android Architecture

2020 October 06

P

Pavel in Android Architecture
Если билдер в domain слое, то не норм. Контекст допустим только в data и view слое
источник

P

Pavel in Android Architecture
Возможно, тогда билдер должен юзать сущность, которая скроет за интерфейсом  контекст
источник

RC

Roman Chumachenko in Android Architecture
Pavel
Если билдер в domain слое, то не норм. Контекст допустим только в data и view слое
Агаа, понял. Окей, тогда приходит в голову следующее:
1) юзкейс отдает все данные, необходимые для Wallet (получает из нескольких репов и мапит в dto),
2) затем я это дело передаю дагеру во view layer, а там уже он сам построит нужную имплементацию Wallet на основе полученной dto
Где тут я спрятал костыль?😅
источник

RC

Roman Chumachenko in Android Architecture
Pavel
Возможно, тогда билдер должен юзать сущность, которая скроет за интерфейсом  контекст
Слушай, у меня тогда вопрос в догонку, не про критику, а именно что понять для себя. Мы можем напрямую инжектить контекст в реализацию репозитория, а репозиторий в юзкейс инжектить, так выходит?
источник

P

Pavel in Android Architecture
В реализацию репозитория можно инжектить контекст. Но обычно инжектится некий context provider, у которого потом спрашивается контекст.
Да, а потом интерфейс репозитория инжектится в юзкейс.
источник

RC

Roman Chumachenko in Android Architecture
Pavel
В реализацию репозитория можно инжектить контекст. Но обычно инжектится некий context provider, у которого потом спрашивается контекст.
Да, а потом интерфейс репозитория инжектится в юзкейс.
Окей, хорошо. Тогда еще вопрос, в чем выиграш ContextProvider в таком случае?
P.S. Дежурно напомню, что я просто пытаюсь понять, а не доказать свою точку зрения :)
источник

P

Pavel in Android Architecture
Просто у приложения может быть несколько контекстов. Например, appContext, accessibilityContext. У активитей тоже свой контекст.
И чтобы было ясно какой именно контекст используется, можно сделать интерфейс типа

interface ContextProvider {

   var applicationContext: Context

}
источник

P

Pavel in Android Architecture
И он проинициализирует в переменную в Application.onCreate()
источник

RC

Roman Chumachenko in Android Architecture
Pavel
Просто у приложения может быть несколько контекстов. Например, appContext, accessibilityContext. У активитей тоже свой контекст.
И чтобы было ясно какой именно контекст используется, можно сделать интерфейс типа

interface ContextProvider {

   var applicationContext: Context

}
Агаа, то есть выиграш уже не в том, кто за кем спрятан, чтобы мокать на тестах проще было, а чисто в этом. Спасибо!
источник

RC

Roman Chumachenko in Android Architecture
Pavel
Просто у приложения может быть несколько контекстов. Например, appContext, accessibilityContext. У активитей тоже свой контекст.
И чтобы было ясно какой именно контекст используется, можно сделать интерфейс типа

interface ContextProvider {

   var applicationContext: Context

}
То есть поставить интерфейс WalletBuilder, в который через ContextProvider будет подаваться контекст, уже будет лучше, верно?
источник

P

Pavel in Android Architecture
В интерфейс не надо ничего передавать. Инжектить в имплементацию.

// В domain-слое
interface WalletBuilder {
 
}

// В data-слое
class WalletBuilderImpl @Inject constructor(private val contextProvider: ContextProvider): WalletBuilder  {

}
источник

RC

Roman Chumachenko in Android Architecture
Pavel
В интерфейс не надо ничего передавать. Инжектить в имплементацию.

// В domain-слое
interface WalletBuilder {
 
}

// В data-слое
class WalletBuilderImpl @Inject constructor(private val contextProvider: ContextProvider): WalletBuilder  {

}
Конечно, это я понимаю
источник

RC

Roman Chumachenko in Android Architecture
Спасибо, ребят!
источник

ЮС

Юрий Суржиков... in Android Architecture
Юрий Суржиков
Всем привет! Вопрос в следующем, вот например, есть основной фрагмент, в котором отображаются элементы recycler view. Этот список с данными можно сортировать различными способами. Сама архитектура хотелось бы, чтобы была MVVM.
Чтобы открыть список фильтров вызывается BottomSheetFragment. В который загружаются динамически списки фильтров. Как посоветуете реализовать такой функционал(архитектуру), чтобы и состояние фильтров хранилось, и чтобы любой ивент, связанный с переключением фильтра, вызывал сортировку или загрузку данных в recycler view?
Блин, скажите хоть, правильно ли вопрос задал?
источник

E

Eugene in Android Architecture
Юрий Суржиков
Блин, скажите хоть, правильно ли вопрос задал?
правильно, просто, это же надо подумать)
если mvvm, заводите, например livedata и подписываетесь, при изменении фильтра достаете из репы отфильтрованный список и кладете обратно в livedata
почитайте про mvvm архитектуру
источник

ЮС

Юрий Суржиков... in Android Architecture
Eugene
правильно, просто, это же надо подумать)
если mvvm, заводите, например livedata и подписываетесь, при изменении фильтра достаете из репы отфильтрованный список и кладете обратно в livedata
почитайте про mvvm архитектуру
Как доставать список это я понимаю, понимаю как его обновлять и прочее. Я за то что, у меня сколько получается вью моделей должно быть: одна(в которой и список и фильтры) или 2(одна со списком элементов, а другая со списком фильтров)? И если одна, то мне получается в BottomSheetFragment нужно передать вот эту вью модель, которая инициализируется в главном фрагменте, так?
источник

ЖР

Женя Рубилов... in Android Architecture
Привет, меня зовут Женя и я продакт менеджер в JetBrains

Недавно я искал уже искал респондентов из Java разработчиков. Теперь хочу общаться на тему Kotlin. Итак, если вы работаете с Kotlin и у вас есть какие-то трудности/сложности/непонимание или что-то просто бесит, то напишите мне лично или сразу закидывайте встречу https://calendly.com/eugene-rubilov-jb/kotlin-android

Мы обсудим ваши вопросы/предложения и я продолжу формулировать роадмап для андроид разработчиков (кстати вот текущий по всему Kotlin https://blog.jetbrains.com/kotlin/2020/10/kotlin-public-roadmap-through-spring-2021/). Особенно интересны топики вокруг build tools.

Спасибо и приятного кодина
источник

NM

Nick Marchuk in Android Architecture
Юрий Суржиков
Как доставать список это я понимаю, понимаю как его обновлять и прочее. Я за то что, у меня сколько получается вью моделей должно быть: одна(в которой и список и фильтры) или 2(одна со списком элементов, а другая со списком фильтров)? И если одна, то мне получается в BottomSheetFragment нужно передать вот эту вью модель, которая инициализируется в главном фрагменте, так?
Одна sharedViewModel которая инициализируется в главном фрагменте
источник

ЮС

Юрий Суржиков... in Android Architecture
Nick Marchuk
Одна sharedViewModel которая инициализируется в главном фрагменте
Все, вот это я и пытался понять. Спасибо большое!
источник

M

Matjon in Android Architecture
Где можно найти простого для изучение туториал по архитектуре Mvvm и MVI
источник