Service
(或BroadcastReceiver
等)在整洁的架构包结构中属于哪里?我想知道域和数据层之间...我会在 domain
包中创建名为 services
的新包。是这样吗,还是我应该换一种方式?
最佳答案
在考虑整洁的架构时,您应该想到 Android Service
与任何其他 Android 应用程序组件(如 Activity
)类似例如。
Service
和 Activity
两者都可以做类似的事情,如播放音乐、执行网络请求等,一个区别是在 Service
的情况下缺少用户界面。 (尽管可以将 Notification
视为 Service
的 UI)。起初,缺少 UI 可能会产生误导。
考虑到这些应用程序组件的相似用途,我们可以想象 Service
和 Activity
可以位于clean architecture项目的同一层。
首先我不会选择 data
层,因为它是您的数据源(在 domain
层中定义的抽象的具体实现)的地方,例如 Web API 或数据库 Controller 。有人会争辩说 Service
在某种程度上是应用程序的数据源,因为您可以绑定(bind)到它并从后台获取数据,但是如果您查看Activities
或 Fragments
您会注意到它们也可以是其他 Activities
的数据源通过使用 Intent
s 或参数。
我不会选择 domain
包 - 它应该包含应用程序业务逻辑的定义 - 存储库的接口(interface)等。此外,这一层应该是平台无关的,所以没有Android组件应该在那里。 Service
绝对不属于那里。
app
(或 presentation
)层被留下。这是一个 Android 特定的 层 - 这是 Service
的地方. Service
可以直接与邻居沟通domain
层通过可以传递给绑定(bind)的用例访问数据 Activity
, 显示 Notification
与数据或其他任何东西。所有这一切都没有违反整洁的架构规则。
关于android - 整洁架构中的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74068503/