0

我在ActionBar中有一个SearchView ,我正在使用onQueryTextListener。我在 ActionBar 所属的活动布局中有一个Listview 。ListView 中有两个 Textview。因此,当用户在 searchview 中输入文本时,会对文本执行 Web 查询(api),并使用接收到的结果(数组)来填充列表视图。就像 AutoCompleteTextView 一样,而是在列表视图中显示结果。

我正在使用HandlerThread来执行此查询并填充列表视图,并且我已经在onQueryTextChange中实现了它,它正在工作。

但是,问题是显示结果需要很长时间。用户完成输入后显示结果。但是,我希望在用户输入文本时显示结果(如谷歌建议)。我怎样才能做到这一点?

4

1 回答 1

0

我想谷歌在他们的服务器上使用缓存的结果来加快对查询的响应。您可以使用 MemCache 或 Varnish 之类的东西来更快地提供结果。如果结果需要搜索,您还可以使用 Apache Solr 或 Lucene 等搜索引擎来提高速度。

谷歌还将拥有非常好的服务器基础设施,缓存结果位于世界各地,因此始终靠近用户。结果可能会因服务器而异,因此它们可以满足本地用户的需求。我记得几年前根据尝试改善在线游戏的响应时间计算得出,欧洲大约是北美的十分之一秒。

您也可以伪造此信息。您可以将预期用户想要的结果下载到他们的设备上,并从设备上的数据库中填写自动完成。一个请求也可以同时发送到服务器,一旦从服务器接收到响应,自动完成结果就会更新。这在某种程度上取决于您正在搜索的内容的复杂性。如果只有有限数量的结果,您可以轻松地将它们全部存储在设备上。

于 2014-12-27T13:45:46.950 回答