Как правильно инициализировать Retrofit в MVP?

В интернете нашёл два пути решения проблемы инициализации Retrofit. Как я понял, он должен быть Singleton. Если я использую MVP в своём проекте, то с точки зрения архитектуры и SOLID разумнее будет выделить отдельный класс-singleton для инициализации Retrofit и потом с помощью Dagger 2 инжектить его в свои активити/фрагменты или же тупо инициализировать Retrofit в классе App, который наследует от Application?


Ответы (1 шт):

Автор решения: ЮрийСПб
  1. Создайте отдельный модуль. Например NetworkModule.
  2. В нём сделайте методы с @Provide аннотацией, которые будут возвращать Retrofit, OkHttp и прочие нужные вещи.
  3. Используйте модуль в компоненте.
  4. Инжектите куда нужно. При этом желательно обернуть это в репозиторий/интерактор
→ Ссылка