Вот несколько минусов MVP в Android-разработке
- Круговая зависимость View и Presenter. У View есть ссылка на Presenter, а у Presenter есть ссылка на View. Обычно это не так плохо, но стоит вспомнить, что в Андроид View — это как правило активити или фрагмент, у которых есть жизненный цикл. Поэтому необходимо создавать новый презентер при создании активити/фрагмента и уничтожать при их уничтожении. Если этого не делать, то может случиться утечка активити.
- Слишком большой интерфейс для работы с View. Как правило в андроид-разработке Presenter делают отдельным модулем, у которого нет доступа к Android SDK. То есть это plain Java/Kotlin Library. И для взаимодействия с View создают интерфейс IView, реализация которого будет передаваться в конструктор Presenter. Наша активити/фрагмент будут реализовывать данный интерфейс, и при создании Presenter будут передавать в конструктор самих себя.
А теперь представим что у нас экран с кучей элементов, каждый из которых выполняет свою функцию. Получается раздутый интерфейс IView, который будет очень сложно поддерживать. Зачастую данную проблему решают разбиением экрана между разными презентерами, у каждого из которых свой IView, но даже так получается не очень удобная схема