如何在等待服务器响应时处理初步模型?

How to handle preliminary models while waiting for server responses?

在我开发的 Android 应用程序中,模型在全球范围内存储,并且活动会收到有关创建、更新和删除模型等更改的通知。收到服务器响应后调用相应的回调。

有一个列出模型的主要 activity 和另一个用于创建新模型的 activity。从那里,用户可以填写几个字段并单击保存。这会触发创建新模型的服务器请求。得到响应后,来自服务器的经过验证的模型被添加到全局集合中,并执行通知回调。问题是在等待响应时要做什么。

  1. 我们可以阻止用户界面并显示微调器。但这不是很敏感,导致用户体验不佳。
  2. 我们可以添加本地初步模型并将其添加到全局集合并触发通知回调。这将允许主要 activity 将其添加到列表中。响应后,我们根据请求的成功或失败更新或删除初步模型。然而,初步模型还没有它的id,所以很难在集合中找到它来更新或删除。
  3. 基于这种方法,我们可以为初步模型分配一个随机的初步 ID。但是,如果用户已经与新模型交互,这可能会创建使用错误初始 ID 的定义不明确的请求。

我们如何在等待服务器响应时以清晰和响应的方式处理多个活动中的初步模型?

2中的最佳答案是让客户端创建ID。不要使用序列中的连续 ID。使用 128 位的随机 UUID。然后客户端可以随机创建一个新的 id 并且失败的可能性几乎为 0。

如果实际上 0 不够好,请让客户创建一个临时 ID。然后让服务器接受该 ID,或发送包含临时 ID 和永久 ID 的响应,以便客户端可以将临时 ID 重新映射到新值。在客户端和服务器上创建之间发出的请求可以由客户端重新发送或由服务器重新映射。

虽然真的 - 一个 128 位的随机 id 被骗的可能性很小,所以你不需要担心它。地球上的每个人都可以创建十亿个模型,并且在他们下次尝试时发生碰撞的几率不到十亿分之一。