我有以下任务要做,我需要从端点构建实时搜索。
现在,事情是我知道该怎么做但是,我不知道的是,如何有效地做到这一点。小应用程序应该执行以下操作:
我所知道的唯一解决方案如下:
我在添加搜索视图的操作栏中添加了一个菜单。 在活动内部,我将有一个带有列表视图的片段(当我想添加一些点击项目时更好),以及当用户搜索某些内容时(例如,"周围," a"首先,然后" ar"等)然后将向服务器发出新请求,并且所有以" a"将被加载到列表视图,从那时起自动完成将完成其工作。
通过这种方式,我需要加载包含" a"的所有数据。并从那里过滤。
现在我的问题是我需要每次解析json文件,而且我可能只需要3条记录。
作为一项改进,我想到了以某种方式过滤json大文件并仅检索我需要的json文件,但我不确定这是否可行,如果是这样的话会花费多少。
有谁知道更好的解决方案?
答案 0 :(得分:1)
由于您无法更改服务器端组件,因此您必须使客户端更智能。
此处的方法是(建议 @pskink )在本地存储数据。如果您对搜索视图中的每个输入/删除字符发出单个请求,那么您实际上是在为其服务器进行DOS操作。此外,这将是缓慢的。
面临的挑战是在本地缓存数据,但要保持“新鲜”,以免它从服务器上的数据中转移太多。实现这一点比听起来更难。
我建议在活动开始后立即从后端加载整个JSON 。根据此列表中每个单独条目的大小,您可能会将它们全部保留在内存中并对其进行过滤(我认为树可能是一个很好的起点)。
如果您遇到此解决方案的任何性能或内存问题,我建议将数据移动到某种数据库中(它不需要是SQLite,Realm也可能很有趣)。当然,同样的挑战也适用于保持数据的最新状态。
既然你说他们告诉你,我想你正在和服务器组件背后的人一起工作。在这种情况下,我发现最好的方法是实现一个有效的解决方案(上面的任何一个)并向他们展示。如果它不够快,请提出建议: