Как заинжектить классы модели в presenter?
До недавних пор я писал весь код работы с базами данных и сетью прямо в presenter(MVP moxy). Сейчас я хочу изменить это и как я понял и мне подсказали необходимо создать класс для работы с сетью, базой данных и тд, на каждый свой. И самое главное - презенер инжектить во view - activity/fragment.А уже классы модели в презентер. Вот я не конца понимаю, как заинжектить классы модели в презентер?до этого я с помощью dagger 2 инжектил классы во view и далее передавал как аргументы в функции презентера. Спасибо
Ответы (1 шт):
Вы можете все зависимости прокинуть в конструктор Presenter-a и указать аннотацию @Inject.
class Presenter @Inject constructor (
private val cahce: Cache,
private val remote: Remote
){
// some code
}
Далее в Activity вы просто инжектите презентер:
class SomeActivity : AppCompatActivity() {
@Inject
lateinit var presenter: Presenter
}
Ну и соответственно нужно помнить, что все зависимости Remote и Caсhe так же должны быть прописаны в модулях или через аннотацию @Inject.
В целом можно презентер и не через конструктор инжектить, как в примере, а просто прописывать @Provide метод в модуле аналогично любому другому классу.