【发布时间】:2017-07-22 17:18:18
【问题描述】:
我正在转换我的应用程序以使用 MVP 模式。对于 MVP 的正确使用,开发人员之间存在一些争论,尤其是在 Android 生命周期和 UI 相关逻辑的去向方面。没有争论应该在演示者中完成任何硬逻辑,并且网络
如果我需要为生命周期函数、onresume、onPause 等做任何事情。我应该...
- 调用 mPresenter.onResumeEvent();演示者然后进行呼叫。 IE 合同.restoreState(); contract.connectToService() 等
或
- 在这里执行我需要的所有逻辑,而不涉及控制器。 IE restoreState,启动加载微调器等。
我认为 onResume 是一个事件。所有事件都应由 Presenter 处理。相反的论点是,我们不想编写“乒乓球”的代码,即OnResume -> Presenter -> 显示微调器(或类似效果)的单行函数
现在颗粒更细了。 假设我开始我的活动,我需要根据数据是否为空来显示错误或数据。
我也可以..
(presenter)
contract.setupUi(data);
然后
(view)
setupUi(Object data){
if(data != null){
//show data
}
else{
//show error
}
哪个 UI 控制从演示者引发的状态。
或者我可以这样做
(presenter)
if(data != null){
contract.showUI(data);
}
else{
contract.showError();
}
哪个有合同查看所有州。
总体目标是让 Presenter 完全控制有关应用程序的所有内容并将视图视为完全哑巴。或者它只是为了测试目的而划分代码。还是两者兼有?
回顾。
- 我应该如何处理生命周期 - 将其视为一个事件或让 看看就做吧。
- 视图相关的逻辑应该去哪里?让演示者弄清楚 什么是 null 以及要显示什么 UI。还是让视图来处理它?
- 我的全部重点应该是什么?控制应用程序 演示者,单元测试,两者兼而有之?
【问题讨论】:
标签: android design-patterns mvp