微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – MVP,在销毁时将演示者的视图设置为null?

我目前正在尝试在 Android上实现MVP模式.但是,我开始考虑内存泄漏(因为演示者持有对活动的引用 – 视图).我的问题是,我应该将演示者的视图设置为null表示活动的onDestroy吗?

这是我的主要活动:

public class MainActivity extends AppCompatActivity implements MainView {
private Button loadUser;
private TextView mTextView;
@Inject
IMainPresenter mPresenter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setUpViews();

    ((MyApp) getApplication()).getAppComponent().inject(this);
    mPresenter.setView(this);
}

private void setUpViews() {
    loadUser = (Button) findViewById(R.id.getUserBtn);
    loadUser.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mPresenter.loadUserName(2);
        }
    });
    mTextView = (TextView) findViewById(R.id.userNameTextView);
}

@Override
public void setUserName(String userName) {
    mTextView.setText(userName);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    mPresenter.setView(null);
}
}

解决方法

我总是喜欢这样,我的意思是,我总是在onDestroy()方法上将视图设置为null.我尝试使用 LightCycle库来避免编写所有样板代码.这篇文章解释了Fernando Ceja的 Clean Architecture.这是一个广泛使用的MVP架构(我曾在几家使用这种模式的公司工作过),在那里你可以看到他还在onDestroy()方法中将视图设置为null .如果我能帮助你,请告诉我.

更新:

这个答案有点过时,现在您可以使用Android的Jetpack工具中的LifecycleOwner类.它基本上是相同的交易,但具有不同的API.

原文地址:https://www.jb51.cc/android/310305.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐