Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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.

大佬总结

以上是大佬教程为你收集整理的android – MVP,在销毁时将演示者的视图设置为null?全部内容,希望文章能够帮你解决android – MVP,在销毁时将演示者的视图设置为null?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。