在 Spinner 中处理长时间的数据加载

Dealing with lengthy loading of data in a Spinner

我在 Android 中有两个微调器。用户从第一个中进行选择,然后根据第一个中的选择填充第二个 Spinner 的适配器。数据必须来自 REST 服务器(速度不是很快),因此第二个 Spinner 需要很长时间才能加载。

从 UI 的角度来看,最好的方法是什么?我可以做几件事,例如:在 Spinner 所在的位置显示一个加载圆圈,或者禁用第二个 Spinner 直到加载新数据。

这些似乎不是最佳解决方案,我很想知道是否有更好的方法。

请注意,在显示页面之前缓存第一个 Spinner 的所有可能选择的所有可能值并不是一个真正的选项,因为这需要对服务器进行多次调用,并且每次调用需要几秒钟的时间。我无法控制所提供的服务器或端点。

您实际上无能为力。如果 REST 调用需要时间,那么,它需要时间,除了获得更好的 Internet 连接之外,您对此无能为力。

我唯一想到的是在加载应用程序时在第二个 Spinner 中选择所有可能的选项,并将其存储在本地数据库中。这样,也许仅在第一次使用时加载应用程序需要时间,但下一次执行会更快,因为您不需要 re-download 数据。

或者,简单地说,只显示一个加载圆圈。如果 REST 服务很慢,那不是你的错...

我推荐骨架式加载。 只显示可以使用的真实控件。因此,如果第一个微调器强制调用 API。我会使用 "cancelable coroutine job" 这样如果他们再次 select 就可以取消它。

然后创建第二个下拉动画的骨架闪烁,直到准备就绪。忙碌的指示圈被播放出来,人们讨厌看到它们。

但是,如果您确定要制作忙碌指示器圆圈,那么我会亲自在微调器控件上覆盖一个小的忙碌指示器,并使微调器控件在准备就绪之前不可聚焦。

此外,如果您实施存储库和 MVVM 模式,您可以在获取更新数据的同时交回缓存数据(如果适合您的模型)。

https://uxdesign.cc/what-you-should-know-about-skeleton-screens-a820c45a571a