gpt4 book ai didi

安卓最有值(value)球员。谁关心从对话框和外部应用程序启动和获取数据?

转载 作者:太空狗 更新时间:2023-10-29 13:13:06 26 4
gpt4 key购买 nike

我喜欢 MVP 概念,它对我组织代码有很大帮助,但每次我需要从外部应用程序、对话框或请求权限获取结果时,我都会遇到同样的问题问题 - 架构的哪个组件应该关心这个?

例如,我们需要实现以下行为:

  • 点击按钮启动谷歌语音识别 Intent
  • 如果我们有多个结果 - 显示一个列表对话框并让用户选择正确的变体
  • 处理它

所以,我们可以这样做(同时决定 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

}

好的,它会工作,但我们有一些问题:

  • 算法未完全封装 - 如果您想更改它,则必须更改 View 和演示器界面
  • 如果您在一个屏幕上有几个像这样的算法,您的 V & P 界面将会非常庞大​​并且难以阅读和理解
  • View becomes 比应有的聪明(V 和 P 都知道 1、2、3、4、5 序列),Presenter了解细节(对话框是一个实现细节,但它要求 View 启动它)
  • 算法不可重用!如何在其他屏幕上使用它?

那么,我想知道您对此有何看法,如何才能做得更好(或者您认为这没问题)?

一般来说:启动对话和 Activity 、请求权限、处理结果,从 MVP 和干净架构的角度来看,这是谁的职责?

鼓励任何想法或建议。请帮我澄清一下,谢谢。

最佳答案

关于 MVP 我的 5 美分:

有些事情在 View 部分是不可避免的,比如启动和收听某些服务(例如:谷歌地图或地点)。

当做类似的事情时,我尽量在 View 中保留尽可能少的逻辑并通知 Presenter 任何交互(即使在那一刻没有用)然后返回 View 所需的操作。

我的听众通常会触发演示者,仅此而已。然后演示者触发 View 执行某些功能。这可能有点矫枉过正,但我​​不希望我的演示者感到被排除在外。

在您的情况下,View 将启动对话和/或权限请求,但演示者会命令它这样做。然后当结果返回时,将它们交给 Presenter 以决定如何处理它(只要您不传递 Android 的东西,例如 View )。

希望这对您有所帮助。

关于安卓最有值(value)球员。谁关心从对话框和外部应用程序启动和获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37879987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com