【问题标题】:How to get context in moxy presenter android如何在 moxy Presenter android 中获取上下文
【发布时间】:2018-11-18 12:08:06
【问题描述】:

如何从 Moxy Presenter 获取活动上下文? 乍一看很简单...: 1. 将Context getMvpActivity (); 添加到MvpView 接口中,并在Acivity 中实现。 2. 在演示者电话中getViewState().getMvpActivity()

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

附:我需要 Presenter 中的上下文来初始化 App 组件(activitystatic getter 的参数)。

谢谢。抱歉有些语法错误。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我想我不能使用 App Context。因为方法 getApplicatin() 仅适用于活动上下文。
    • 在 DI 组件注入之后,我可以使上下文为空...我不想和你谈论 Moxy 库...请阅读有关 moxy 中的 ViewState...它是如何工作的.
    • 如果你在注入后清理上下文,它仍然可能活动上下文泄漏。因为来注入的组件将处理这个上下文链接。如果它需要应用程序,您可以提供应用程序而不是上下文。另外,我建议像这样在 Presenter 的构造函数中提供依赖项:github.com/Arello-Mobile/Moxy/issues/100。 PS:我知道所有关于 moxy 视图状态 ;)
    【解决方案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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      • 2018-12-29
      • 1970-01-01
      • 2020-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多