Я разрабатываю приложения для Android за несколько лет. Недавно я использовал MVP-архитектуру в своем приложении и после многократного прочтения и использования этого Android10 github repo.Вопросы по шаблону MVP для Android-приложений
Но есть несколько вопросов, которые у меня есть вокруг этой архитектуры MVP, которую я ищу. Пожалуйста, помогите мне понять их лучше.
1) Итак, у меня есть три модуля приложения, домена, данных. Какие ведущие модуля будут идти. В каком-то приложении у вас есть это в домене, но я видел, что некоторые другие библиотеки имеют его в модуле презентации или приложения, например, https://github.com/android10/Android-CleanArchitecture.
2) Могут ли предъявители иметь связанные с Android продукты, такие как намерения, контексты, общие ресурсы? Я не думаю, что это должно произойти.
3) Могут ли данные модуля разговора с приложением модуля и наоборот, или модуль приложения должен поговорить с модулем домена, который в перспективе выполняет вещи на модуле данных
4) Как я могу сделать социальный логин как Facebook с архитектурой MVP ... любая идея или ссылка для объяснения? Я сделал это в поле ниже образом:
активность: onFBButtonClick()
->presenter.onButtonClick()
->FacebookLoginManager.registerCallback
После этого я сразу получить обратный вызов от моей деятельности на onActivityResult(int requestcode, int resultcode, Intent intent)
. Теперь согласно fb sdk tutorial я должен позвонить FbCallbackManager.onActivityResult(with all the params)
. Но я не могу передать эту информацию в презентаторе, поскольку ведущий не должен знать о намерении (Platform Specific). Как я могу позвонить FbcallbackManager.onActivity()
?
2) Намерение - это действительно фреймворк Android - должно быть в V части MVP. Контекст - должен быть достигнут путем инъекции зависимостей, когда вам это нужно, я избегаю его в Presenter. SharedPrefs то же самое - они строго связаны с конкретным UseCase (или Interactor, что бы вы ни называли). UseCase использует репозитории для данных, а SharedPrefs может быть таким репозиторием для инъекций. Отметьте ответ donnfelker: https://www.reddit.com/r/androiddev/comments/35vgw7/in_an_mvp_architecture_where_would_accessing_the/?sort=top Лично я бы не использовал UseCase для простого презентатора. Используйте репозиторий прямо. – Przemo
@Przemo Что я понимаю из v part is View ... Активность, фрагменты. Я не думаю, что мы можем реализовать Intents как View. Любой способ для ответа. – anshul
Yep, V - часть фреймворка Android (действия, представления, фрагменты). Я имел в виду, что в основе View часть должна быть включена информация о намерениях, например, запуск новой активности, IntentFilters, BroadcastReceivers, Services и т. Д. На самом деле это не вид, это Контроллер. Но в MVP View на самом деле View + simple Controller с вещами, которые я только что сказал, нажмите прослушиватели и т. Д. – Przemo