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

Geo*_*iev 6 mvp android dagger-2

我目前正在尝试在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);
}
}
Run Code Online (Sandbox Code Playgroud)

4gu*_*71n 3

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

更新:

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