我喜欢MVP概念,它对我组织代码有很大帮助,但每次当我需要从外部应用程序,对话框或请求权限获取结果时,我都面对同样的问题问题 - 架构的哪个部分应该关注这个?
例如,我们需要实现以下行为:
所以,我们可以像这样做smth(也决定Fragment实现View,包含指向Presenter的链接并向其发送UI事件):
interface View {
void showRecognizer();//2
void showChooseDialog(List<String> items);//4
}
interface Presenter {
void onButtonClick();//1
void onRecognizerResult(List<String> results);//3
void onResultChosen(String result);//5
}
好的,它会起作用,但我们遇到了一些问题:
所以,我想知道你对此的看法,如何做得更好(或者你认为这样可以)?
一般而言:开始对话和活动,请求权限,处理结果,从MVP和清洁架构的角度来看它的职责是什么?
鼓励任何想法或建议。请帮我澄清一下,谢谢。
答案 0 :(得分:2)
关于MVP的5美分:
有些事情在View部分无法避免,例如开始和收听某些服务(例如:谷歌地图或地点)。
在做类似的事情时,我尝试在View中留下尽可能少的逻辑并通知Presenter任何交互(即使在那一刻没用),然后返回View所需的操作。
我的听众通常会触发演示者,而不是别的。然后,演示者触发视图以执行某些功能。这可能是一种矫枉过正,但我不希望我的主持人感到被遗忘。
在您的情况下,View会启动一个对话框和/或权限请求,但是演示者会命令它这样做。然后当结果返回时,将它们交给Presenter决定如何处理它(只要你不传递类似视图的Android内容)。
希望这有帮助。