【问题标题】:How to expand code/description to a complex object?如何将代码/描述扩展到复杂对象?
【发布时间】:2019-03-13 15:38:38
【问题描述】:

我想在回收站视图中显示一些复杂对象的名称/基本属性列表(即它们由其他对象的多个集合组成),然后在用户选择时获取完整对象。例如,顶级对象是“Play Scripts”,每个对象都包含许多“Spoken Lines”,由与 Play Script 关联的“Actor”之一说出。

我正在尝试使用 Android 架构组件来执行此操作,并且(使用 Florian @codinginflow.com 的教程)成功地使用 Room 创建了简化的 Play_Script 类、DAO 和存储库。我还在 ASP.Net 中创建了一些基本的 REST Web 服务,它们可以提供来自 MySQL 数据库的数据。

让我感到震惊的是,我所走的路径会表现不佳,并且会使用过多的网络带宽来获取大量我不会使用的数据。我正在获取每个 Play Script(包括它的 Spoken Lines 等),以便我拥有 Play Script “Name”和“Description”属性来填充 Recycler。

在过去,我只需要“从 Play_Script 中选择 ID、名称、描述”,一旦用户做出选择,我就会使用 ID 作为密钥来获取我需要的所有其他内容。我怀疑我在数据实体的设计中遗漏了一些基本的东西,但我找不到任何关键字可以让我搜索这种常见任务做得很好(/根本)的例子。

请你帮这个小白解决他的第一个问题?

干杯, Z

5 月 15 日更新: 虽然我没有得到回应,但从我最近几周阅读的内容(例如重新依赖注入)来看,我怀疑在 Android 开发中没有针对此类事情的一揽子方法。看起来人们通常要么检索大量数据,然后使用他们需要的东西,要么构建多个 Web 服务 API 来返回包含密钥的稀疏数据,客户端可以在需要时使用这些密钥进行扩展。因此,例如,您可以同时制作“plays_light”和“plays_detail”Get API。

【问题讨论】:

    标签: java mysql rest class android-mvvm


    【解决方案1】:

    我的解决方案与我的 5 月更新完全相同 - 即扩展 Web API 并提供许多返回不同粒度信息的类似调用。它不是特别优雅,我怀疑可能有更好的方法,但它有效。总的来说,我发现用户往往需要更少的父实体细节,而我们需要更多的单个子/孙。

    我现在明白为什么有些应用程序这么慢了:在 Web 服务设计中很容易偷懒,只返回大量数据 - 客户端只会使用其中的一小部分 - 并通过说服自己来证明这一点这个单一的 API 将是普遍适用的,因此任何拿起我的代码的人都更容易理解。

    同样,这可能是我的经验不足,但我发现通过 API 调用检索的 Android 端的关系数据的本地缓存非常笨拙 - 大量存储外键,然后重新解析 json 以将数据放入 SQLite 表中。我希望 Dagger 在简化这方面会比到目前为止更有用。实际上,为了保持理智,我解开了一大堆与 Dagger 相关的代码。不确定我是否完全成功!

    仍然非常欢迎更好的答案。 Z

    【讨论】:

      猜你喜欢
      • 2019-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多