如何在moxy presenter android中获取上下文

时间:2018-06-08 12:17:20

标签: android architecture mvp android-context android-moxy

如何从Moxy演示者获取活动上下文? 乍一看它很容易......:1。将Context getMvpActivity ();添加到MvpView界面并在Acivity中实现它。 2.在演讲者的电话中getViewState().getMvpActivity()

但是Moxy不允许将非空方法添加到MvpView接口。 请帮助我。

P.S。我需要Presenter中的上下文来初始化应用程序组件(activitystatic getter的参数。)

感谢。对不起,有些语法错误。

2 个答案:

答案 0 :(得分:3)

正确的解决方案是不在演示者中使用活动上下文。因为,在活动娱乐的情况下,此上下文将泄漏(因为演示者将仍然活着)。您可以使用应用程序上下文。您可以通过演示者的构造函数传递它。

答案 1 :(得分:0)

通过在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);
}