Как получить контекст в Moxy Presenter Android
Как я могу получить контекст активности от докладчика Moxy? На первый взгляд это очень просто...: 1. Добавить Context getMvpActivity ();
в MvpView
интерфейс и реализовать его в деятельности.
2. И в разговоре ведущего getViewState().getMvpActivity()
,
Но Moxy не позволяет добавлять не пустые методы в MvpView
интерфейс. Пожалуйста, помогите мне.
PS Мне нужен контекст в Presenter для инициализации компонента приложения (activity
это парам для static
геттер).
Благодарю. Извините за некоторые грамматические ошибки.
2 ответа
Правильное решение не использует контекст деятельности в докладчике. Потому что в случае активного отдыха этот контекст будет утекать (потому что ведущий будет еще жив). Вы можете использовать контекст приложения. Вы можете передать его через конструктор докладчика.
Решил эту проблему с добавлением Activity
контекст как параметр в onViewCreated()
, Как это:
//presenter super class
public void onViewCreated (Activity activity) {
//init component here
//this.component = ...
injectPresenter ();
}
protected PresenterComponent getComponent () {
return this.component;
}
protected abstract void injectPresenter ();
//presenter child class
@Override
public void onViewCreated (Activity activity) {
super.onViewCreated(this);
}
@Override
protected void injectPresenter () {
//you can name "inject" different ways
//in your presenter component interface
getComponent().inject(this);
}
//activity class
@Override
protected void onCreate () {
//P.S.(for beginners) variable presenter is the object of class
//which extends Presenter super class
presenter.onViewCreated(this);
}