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)
我总是这样做,我的意思是,我总是在方法上将视图设置为 null onDestroy()。我尝试使用LightCycle库来避免编写所有样板代码。这是一篇解释 Fernando Ceja 的清洁架构的文章。这是一种广泛使用的MVP架构(我曾在几家使用这种模式的公司工作过),在那里你可以看到他还在方法中将视图设置为null onDestroy()。如果我可以进一步帮助您,请告诉我。
更新:
这个答案有点过时了,现在您可以使用 Android Jetpack 工具中的 LifecycleOwner 类。基本上是相同的交易,但 API 不同。
| 归档时间: |
|
| 查看次数: |
4384 次 |
| 最近记录: |