Size: a a a

Android Architecture

2020 May 02

AY

Andy Yanechko in Android Architecture
Pavel Shchahelski
Добрый, в разрезе клин архитектуры, repository или слой data оперирует данными. Поэтому что куда положить можно решить и на репо легко, чтоб не гонять на домен
А Вы это делаете не в интеракторах, используя репозитории? В таком случае можно и до домен слоя тянуть (то есть до слоя, где интерактор)
источник

PS

Pavel Shchahelski in Android Architecture
Andy Yanechko
А Вы это делаете не в интеракторах, используя репозитории? В таком случае можно и до домен слоя тянуть (то есть до слоя, где интерактор)
Ну тут момент такой что Нетворк это один грубо говоря стор данных, бд это другой стор данных. А манипуляции со сторонами делает сущность под названием репо. А домен - это больше для бизнес логики, бизнес правил. Поэтому это ок делать на дате
источник

JF

Jorik Fat in Android Architecture
Ещё до меня не доходит до конца зона ответственности presenter'а.
Предположим, у меня есть кастомный экран с настройками. В нем есть switch. Я хочу его отображать в том положении, какое у него сохранено.
Если switch == true он отобразит анимацию включения, я его выключаю, поворот - анимации отключения нет (потому что при создании он инфлейтится как false).
А я хочу, чтобы отобразилось последнее действие пользователя.
Вопрос в том, как инициализировать изначальное состояние без анимации? Неужели через отдельные методы view со своими StateStrategy(moxy)?
источник

JF

Jorik Fat in Android Architecture
Вопрос чисто концептуальный
источник
2020 May 03

PS

Pavel Shchahelski in Android Architecture
Jorik Fat
Ещё до меня не доходит до конца зона ответственности presenter'а.
Предположим, у меня есть кастомный экран с настройками. В нем есть switch. Я хочу его отображать в том положении, какое у него сохранено.
Если switch == true он отобразит анимацию включения, я его выключаю, поворот - анимации отключения нет (потому что при создании он инфлейтится как false).
А я хочу, чтобы отобразилось последнее действие пользователя.
Вопрос в том, как инициализировать изначальное состояние без анимации? Неужели через отдельные методы view со своими StateStrategy(moxy)?
любое состояние вашего ui должна контролироваться презентационным слоем(презентор или вью модель или контроллер или как называете). как вариант, при инициализации презентора можно запостить дефолтное состояние для юай. сам презентейшен слой не хранит никакого состояние конечно же (оно должно прийти из data слоя). если я верно понял вопрос.
источник

AD

Aleksey D. in Android Architecture
Pavel Shchahelski
любое состояние вашего ui должна контролироваться презентационным слоем(презентор или вью модель или контроллер или как называете). как вариант, при инициализации презентора можно запостить дефолтное состояние для юай. сам презентейшен слой не хранит никакого состояние конечно же (оно должно прийти из data слоя). если я верно понял вопрос.
хм, а если это true/false для какой-то временной настройки - тоже в data тащить?
источник

PS

Pavel Shchahelski in Android Architecture
я бы исходил из удобства использования и понимания того что нужно сделать. я не совсем знаю, что имеется в виду под временной настройкой.
источник

JF

Jorik Fat in Android Architecture
Pavel Shchahelski
любое состояние вашего ui должна контролироваться презентационным слоем(презентор или вью модель или контроллер или как называете). как вариант, при инициализации презентора можно запостить дефолтное состояние для юай. сам презентейшен слой не хранит никакого состояние конечно же (оно должно прийти из data слоя). если я верно понял вопрос.
По сути Вы ответили на основной вопрос про дефолтную инициализацию. Но почему пресентер не хранит состояния? Как же он его восстановит после поворота?
источник

JF

Jorik Fat in Android Architecture
Но более глобальный вопрос это - "за какой стек задач отвечает пресентер?"
источник

PS

Pavel Shchahelski in Android Architecture
презентор - это просто прослойка, для того чтобы сообщать юай, что ему нужно сделать, т.е. установить ui state. он не содержит ни логики, ни понимание откуда приходят данные и т.д. он от слова презентационный слой просто мапит результаты выполнения каких-то бзинес кейсов на ui. т.е. нажали на баттон, надо выоплнить какое-то правило. он вызывает это правило, поулчает ответ и знает как показать этот рузельтат на ui. надеюсь, что смог как-то пояснить
источник

JF

Jorik Fat in Android Architecture
В общих чертах это понятно. У меня получается что это слой взаимодействия пользователя с доменом
источник

АЕ

Алексей Ершов... in Android Architecture
Аккуратно надо воспринимать слова "не содержит логики". Логика бывает разная, связанная с работой предметной области, приложения ли UI конкретного экрана. Последняя как раз в презентере и должна быть. Если пошла загрузка данных, показать прогресс - тоже ведь логика.
источник

JF

Jorik Fat in Android Architecture
Но например входит ли всего задача навигации в приложении?
Presenter, как я понял из концепции mvp - платформонезависимый слой (т.е. технически можно его прям в fx перенести без изменений)
источник

JF

Jorik Fat in Android Architecture
Алексей Ершов
Аккуратно надо воспринимать слова "не содержит логики". Логика бывает разная, связанная с работой предметной области, приложения ли UI конкретного экрана. Последняя как раз в презентере и должна быть. Если пошла загрузка данных, показать прогресс - тоже ведь логика.
Согласен
источник

АЕ

Алексей Ершов... in Android Architecture
Jorik Fat
Но например входит ли всего задача навигации в приложении?
Presenter, как я понял из концепции mvp - платформонезависимый слой (т.е. технически можно его прям в fx перенести без изменений)
Обращения к навигатору - да, реализация платформенной навигации - нет
источник

АЕ

Алексей Ершов... in Android Architecture
Я знаю человека который сделал мультиплатформенные презентеры, но это по мне несколько перебор) если нет большой необходимости
источник

JF

Jorik Fat in Android Architecture
Алексей Ершов
Обращения к навигатору - да, реализация платформенной навигации - нет
Имел ввиду не реализацию навигации, а управление ею
источник

JF

Jorik Fat in Android Architecture
Ещё в заблуждение вводят названия. В схеме clean в книге между domain и view лежит 2 слоя (controller и presenter. Controller отвечает за обработку пользовательских действий; Presenter за форматирование и вывод данных пользователю). Получается что в Android+moxy - Activity.fragment = presenter; А Moxy.Presenter = controller.
источник

JF

Jorik Fat in Android Architecture
А view-слой это layout
источник

AD

Aleksey D. in Android Architecture
Pavel Shchahelski
я бы исходил из удобства использования и понимания того что нужно сделать. я не совсем знаю, что имеется в виду под временной настройкой.
в рамках одного экрана, которая живет только пока жива вьюха (фильтр списка контактов, например 🤷)
источник