问题标签 [android-architecture]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
73 浏览

dagger-hilt - 使用 Hilt 处理功能模块的子模块

有没有办法让匕首与使用表示域数据作为子模块的干净架构一起工作?

例如我有Feature A一个模块。该模块有 3 个子模块:

  1. 演示模块
  2. 域模块
  3. 数据模块

如何为每个子模块提供所需的依赖项?如果我创建一个 DI 模块(另一层),那么我需要将它们 3 个子模块作为依赖项,并且我必须以某种方式返回这些依赖项,但我无法这样做,因为这会创建一个循环依赖项(至少这就是我思考)

  • DI -> 域 -> DI
  • DI -> 数据 -> DI
  • DI -> 演示文稿 -> DI

另外我违反了“域不应依赖于任何模块”的规则

0 投票
1 回答
26 浏览

domain-driven-design - 我应该在哪里做映射?如何在存储库上进行映射?数据源还是存储库?

我正在实现一个干净的架构设计:ui -> domain <- data 在模块中(这很重要),我遇到了麻烦。

我有存储库和数据源。我在域模块中创建存储库和数据源接口

DataSource:在数据模块(实体、远程)中添加返回数据模型的函数

存储库:调用数据源并映射到域对象。

现在我面临一个问题。如果我想在存储库上进行映射,我该如何在不知道数据模型的情况下进行,这似乎是不可能的,为了在存储库上进行映射,我需要知道存在什么样的数据模型。

我不想在 DataSource 上进行映射,因为提供原始数据(数据模型)是它的责任

我应该在这里做什么?我错过了什么或不理解什么?

0 投票
1 回答
53 浏览

firebase - 我们可以将firebase称为服务器吗?

我正在使用 firebase 通过 android 应用程序存储数据。我想为该应用程序绘制架构图,那么我可以将 firebase 称为服务器吗?我正在尝试使用客户端服务器架构,因此对于服务器,我将 firebase 编写为服务器。这个对吗?

0 投票
1 回答
44 浏览

android - 在 Android 上使用 MVI 更新部分 UI

  1. 关于 MVI,我了解的一件事是模型创建状态,视图处理它。视图总是从模型中获得完整的状态,这意味着赋予视图的每个状态都包含视图每个部分的信息,每次。我是否正确理解了它?

  2. 鉴于上述 1 是正确的,如果我每次都获得完整状态,我如何只更新视图的一小部分?示例:模型由类型 Group 和 User 组成。组包含许多用户、名称和位置。编辑组时,我想显示名称、位置和可能的组成员(用户)列表,并为每个用户显示复选框。要求说用户列表可以在组编辑过程中发生变化;可以删除用户,新用户可以加入(从数据库中添加或删除),同时显示视图。因此,用户列表需要在编辑组时能够更新。但是组名和位置应该只在最初更新,而不是在更新用户列表时更新。例如,我不想多次调用名称 textview 的 .setText()。如何按照 MVI 视图状态原则实现这一点?

0 投票
0 回答
24 浏览

android - 继续创建片段并在它们之间传递数据有什么更好的选择?

这个来自 Udacity 的 android课程包含一个名为“App Architecture(UI Layer)”的部分,它在其中创建了以下应用程序

这个应用程序基本上给你 X 秒来猜测尽可能多的单词。在这种情况下,作者决定使用一个片段 (GameFragment.kt) 和一个处理所有游戏逻辑的视图模型 (GameViewModel.kt)。

现在想象一下,我不想在 X 秒内找到尽可能多的单词,而是想在 10 轮中玩两个玩家之间的游戏。我每次只给每个玩家一个词,他们有 X 秒的时间来找到它。每一轮都由玩家轮流猜测单词。

在这种情况下,我可以通过创建 MainGameFragment 来遵循课程中所示的应用程序架构,该 MainGameFragment 将为玩家的每一轮创建片段。在每个玩家的时间结束后,该片段将再次调用 MainGameFragment 并将每个案例所需的数据传递给它(当前回合,是否找到单词的布尔值等)。

还有比这更好的方法吗?