我目前正在尝试在
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 举报,一经查实,本站将立刻删除。