Android 服务在 MVP 模式中应扮演什么角色?

2024-01-08

我正在开发一个可以进行人类活动识别的 Android 应用程序。

它的工作原理基本上是这样的 - 服务不断读取加速器数据并将识别的活动(即步行、跑步)存储在数据库中。用户可以看到所有已识别的活动ListView活动中(访问数据库)。数据库中的每个用户表都有一个 pa_goal(身体活动目标)字段,服务从数据库中读取该字段并进行一些检查。

当然,用户可以通过活动更改此目标。因为我将实施 MVP 架构模式。

我不确定该服务应该放在哪里?这肯定不是视图。有什么建议吗?


在一个干净的架构中(我假设您正在使用 MVP),存在将框架与业务逻辑分离的想法。这基本上就是普通演示者允许您做的事情。

在这种情况下,它不是您正在处理的视图,但原理是相似的。当您可以将所有业务或应用程序逻辑分离出来以获得更好、更单一职责的类时,您不希望将所有业务或应用程序逻辑混合在 Android 代码中。所以我想说,虽然它不是一个视图,但您仍然应该有一个演示者类型类(可能最好称为控制器或管理器)。

此类将是一个 POJO,用于控制服务的行为方式,可以使用标准 junit 测试和服务模拟轻松进行测试。然后,可以将此类和服务放入其自己的功能包中,并以与演示者相同的方式与后端模型进行交互。

因此,总而言之,该角色是应用程序的另一个功能,该功能与其他功能一起放置(根据我的经验,这些功能通常只是视图)。

希望有帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 服务在 MVP 模式中应扮演什么角色? 的相关文章

随机推荐

  • 从实现类中的接口继承注释?

    假设我有这个界面 public interface IFoo
  • 如何根据设备大小操作 iframe css

    我正在构建此网站 但在根据设备大小操作 iframe 时遇到问题 基本上 我想要的是 如果在平板电脑上使用 则视频是一种尺寸 但例如 如果用户使用手机等移动设备 则视频是其他尺寸 建议它小于平板电脑或桌面窗口尺寸 如果有任何一个从那以后 我
  • JSP scriptlet 中的方法合法吗?

    我知道不推荐它 我应该使用标签库等 但我仍然想知道在 JSP scriplet 中声明方法是否合法 那合法吗 我收到一些奇怪的编译错误 例如a is expected 这似乎不合适 谢谢 您需要使用声明语法
  • Google USB 包未显示在 SDK 管理器中

    我最近下载并安装了 Eclipse Java EE IDE Indigo Service Release 2 我制作了一个在模拟器上运行良好的简单应用程序 现在我想尝试在我的 Android 移动设备上运行它 在 Android 开发者网站
  • 允许后台应用程序设置不同进程的前台窗口

    首先 我知道这是一个有争议的讨论 但我希望我们能够保持技术性 我有一个在后台启动的应用程序 我希望它能够在不同的进程中激活 聚焦窗口 但是 即使我要激活其窗口的进程已调用AllowSetForegroundWindow ASFW ANY 调
  • 接受具有空接口返回类型的参数中的函数

    我想了解为什么下面的代码片段无法编译 Go 接受函数作为可能具有任何返回类型的函数参数的方式是什么 package main func main test a Error cannot use a type func string as t
  • 如何在 Sphinx 处理的文档字符串中表达单个参数或返回值的多种类型?

    有时 Python 中的函数可能接受灵活类型的参数 或者它可能返回一个灵活类型的值 现在我不记得这样的函数的一个很好的例子 因此我用下面的玩具示例来演示这样的函数可能是什么样子 我想知道如何使用 Sphinx 文档符号为此类函数编写文档字符
  • 使弹性项目向右浮动

    I have a div class parent div class child Ignore parent div div another child div div 家长有 parent display flex 对于我的第一个孩子
  • 如何在 ravendb 3.5 中查找附件?

    我目前正在调试一些代码 这些代码应该返回给定文档的附件 但没有返回任何附件 Raven studio 表明数据库中有附件 它向我显示存在多个附件 但我无法通过工作室 Web UI 查看特定文档是否有附件 有没有办法通过工作室用户界面查询附件
  • 路径参数和多种控制器类型

    我有一个 asp net Web api 使用属性在控制器上进行路由 操作级别上没有路线属性 访问资源的路径是 Route id public MyApiController ApiController public HttpRespons
  • QML 几个具有主动焦点/键盘快捷键控制的项目

    我正在尝试为我的 qml 应用程序实现键盘快捷键控制 我知道可以使用 Action 元素来做到这一点 但我不想要强制使用的菜单和工具栏 这就是我通过键盘事件来探讨这个主题的原因 为此 我需要让执行操作的元素成为焦点 但我的目标是全局快捷方式
  • 嵌入谷歌地图 - 如何消除不需要的标记?

    如果我嵌入带有以下内容的谷歌地图 这是 iframe 上的 src 属性 地图上有两个标记 第一个标记是我传入的纬度 经度 绿色箭头 第二个标记是常规标记 有没有办法消除第二个标记 看起来您正在查询字段中发送坐标 这似乎意味着您正在 Goo
  • 使用 if 条件的列表理解来获取特定类型的文件列表

    大致遵循将列表推导式与 if else 结合在一起的逻辑这个解决方案 https stackoverflow com questions 14638871 python ternary iteration with list compreh
  • 将动态库注入企业应用程序(ipa)

    我想将我的库注入到现有的企业应用程序 ipa 文件 中 我找到了 mach inject 但这仅适用于 MacOS 其可能是因为https www mocana com https www mocana com正在这样做 请帮忙 任何想法
  • 如何在 Angular 4 规范文件中模拟 nativeElement.focus()

    我有一个方法使用ElementRef其定义如下 ViewChild idNaicsRef idNaicsRef ElementRef ElementRef然后使用设置焦点 nativeElement focus 该方法在运行规范时失败 提示
  • 将估算数据从模型添加到数据集 - hmisc aregImpute

    我正在尝试使用 hmisc 从数据集中估算值 我正在跟进本指南 https rstudio pubs static s3 amazonaws com 344055 0c737f77c0ef4e36b6865cb843a7bb4a html
  • PartialFunction 和 MatchError

    定义 PF 有两种方法 1 用文字case 语法和 2 作为显式类 我需要以下函数抛出 MatchError 但在第二种情况下不会发生 1 带外壳 val test PartialFunction Int String case x if
  • asp.net core 构建错误:“HttpRequestMessageExtensions”

    使用 ASPNet Core 1 1 Web API 模板并尝试在 Post 上创建响应 构建项目时出现以下错误 感谢您的帮助 Controllers MessagesController cs 37 28 37 72 错误 CS0433
  • 带有圆角、描边边缘和选择器图标的自定义微调器

    我想要我的Spinner具有黑色渐变背景 左侧带有白色文本 右侧有一个选择器图标 白色向下的三角形 在我看来 有两种方法可以解决这个问题 如果我将背景设置为 xml 可绘制资源 我可以使我的Spinner看起来很完美 但是我需要以某种方式在
  • Android 服务在 MVP 模式中应扮演什么角色?

    我正在开发一个可以进行人类活动识别的 Android 应用程序 它的工作原理基本上是这样的 服务不断读取加速器数据并将识别的活动 即步行 跑步 存储在数据库中 用户可以看到所有已识别的活动ListView活动中 访问数据库 数据库中的每个用