Size: a a a

Android Architecture

2017 January 31

KF

Kirill Filimonov in Android Architecture
наверное, не стоит смешивать эти понятия. В SOA или в микросервисах там обычно речь идет о протоколах и сетевом взаимодействии
источник

AP

Alexey Pushkarev in Android Architecture
Ребят, вопрос. А где мне следует хранить данные, которые должны жить только в рантайме? Т.е. допустим, у меня приложение не кэширует что-то в бд. Получает данные и хранит пока приложение живо. У меня есть репозиторий, в нем по сути ретрофит, который берет данные из сети. Репозиторий сделал на случай если бд в дальнейшем понадобится, то будет удобно делать выборку из бд или сети в репозитории. А данные которые, хранятся в рантайме я тоже в репозитории хранить должен или какой-то манагер данных должен быть, в которого складываются данные из сети?
источник

AD

Andrew Dementiev in Android Architecture
Держи в репе, раз сделал, просто в переменных, будут жить пока инстанс репа жив
источник

EM

Eugene Matsyuk in Android Architecture
Alexey Pushkarev
Ребят, вопрос. А где мне следует хранить данные, которые должны жить только в рантайме? Т.е. допустим, у меня приложение не кэширует что-то в бд. Получает данные и хранит пока приложение живо. У меня есть репозиторий, в нем по сути ретрофит, который берет данные из сети. Репозиторий сделал на случай если бд в дальнейшем понадобится, то будет удобно делать выборку из бд или сети в репозитории. А данные которые, хранятся в рантайме я тоже в репозитории хранить должен или какой-то манагер данных должен быть, в которого складываются данные из сети?
Да, можно прям в репозитории хранить
Если много, то вынеси в класс HeapStorage, например
Но ты должен иметь в виду, что если андроид из-за памяти грохнет приложение, ничего же из этого не сохранится
Поэтому важные данные можно в Prefs хранить, как вариант. Работа также через Репозиторий
источник

AP

Alexey Pushkarev in Android Architecture
Eugene Matsyuk
Да, можно прям в репозитории хранить
Если много, то вынеси в класс HeapStorage, например
Но ты должен иметь в виду, что если андроид из-за памяти грохнет приложение, ничего же из этого не сохранится
Поэтому важные данные можно в Prefs хранить, как вариант. Работа также через Репозиторий
в случае если грохнет, то там можно в презентере в onFirstAttach запрашивать и снова заинитить данные
источник

AP

Alexey Pushkarev in Android Architecture
у меня мокси кстати)
источник

KF

Kirill Filimonov in Android Architecture
вроде, в этом и вся суть. репозиторий не определяет способ хранения данных. сегодня у тебя они полями лежат, завтра появилось БД, интерфейс репозитория не поменялся, соответсвенно, клиенты интерфейса тоже не поменялись. профит.
источник

EM

Eugene Matsyuk in Android Architecture
Kirill Filimonov
вроде, в этом и вся суть. репозиторий не определяет способ хранения данных. сегодня у тебя они полями лежат, завтра появилось БД, интерфейс репозитория не поменялся, соответсвенно, клиенты интерфейса тоже не поменялись. профит.
абсолютли
источник

EM

Eugene Matsyuk in Android Architecture
поменял реализацию Репозитория и вуаля
источник

AE

Alexey Elisov in Android Architecture
а ещё вопрос. презентер должен оборачивать методы роутера для вью? или можно в презентере сделать метод  getRouter(), чтобы дергать его во вью?
источник

А

Андрей in Android Architecture
вьюшка роутер дергать не должна. все команды по навигации отдает презентер.
источник

AE

Alexey Elisov in Android Architecture
просто у меня получается что-то типа:
View.onClickListener() -> mPresenter.navigateToMainScreen();
Presenter.navigateToMainScreen() -> mRouter.navigateToMainScreen();
источник

А

Андрей in Android Architecture
View.onClickListener() -> mPresenter.navigateToMainScreen()

Я бы так не делал. Вюшка только сообщает о том, что произошло какое-то событие. А решение о том, что нужно отредиректить на мейн скрин, должен принять презентер. От вьюшки это должно быть скрыто.
источник

А

Андрей in Android Architecture
А по поводу getRouter() - кажется уже обсуждали и большинство за то, что все методы вьюшек и презентеров должны быть void.
источник

AE

Alexey Elisov in Android Architecture
у меня есть адаптер и при клике на любой из айтемов должен дергаться метод роутера Router.navigateToPersonScreen(Person person)
источник

AE

Alexey Elisov in Android Architecture
мне нужно сделать так:
Adapter.onItemClickListener(Person person) -> mPresenter.onAdapterItemClick(person);
Presenter.onAdapterItemClick(Person person) -> mRouter.navigateToPersonScreen(person)

верно? что-то я запутался совсем)
источник

AE

Alexey Elisov in Android Architecture
Андрей
View.onClickListener() -> mPresenter.navigateToMainScreen()

Я бы так не делал. Вюшка только сообщает о том, что произошло какое-то событие. А решение о том, что нужно отредиректить на мейн скрин, должен принять презентер. От вьюшки это должно быть скрыто.
и получается, если мне нужно загрузить список всех юзеров, то нужно делать так:
Fragment.onCreateView() -> mPresenter.onCreate()
Presenter.onCreate() -> mInteractor.loadUsers() -> mView->fillUsersList(users);
источник

D

Dmitriy in Android Architecture
Eugene Matsyuk
ну это же пропоганда врагов! =)
а вообще здорово, что у ios разработчиков есть такая вот хорошая методичка по архитектуре от рамблера
источник

А

Андрей in Android Architecture
Alexey Elisov
мне нужно сделать так:
Adapter.onItemClickListener(Person person) -> mPresenter.onAdapterItemClick(person);
Presenter.onAdapterItemClick(Person person) -> mRouter.navigateToPersonScreen(person)

верно? что-то я запутался совсем)
я бы делал как-то так, да. может еще кто-то что-то подскажет.
источник

EM

Eugene Matsyuk in Android Architecture
Dmitriy
а вообще здорово, что у ios разработчиков есть такая вот хорошая методичка по архитектуре от рамблера
думаете, нам стоит такой же документик оформить?
где будет все расписано, как делать, а как не надо?
источник