我在 ActionBar 中有一个 SearchView ,我正在使用 onQueryTextListener 。我在ActionBar所属的活动布局中有一个 Listview 。 ListView中有两个Textview。因此,当用户在searchview中输入文本时,对文本执行web查询(api),并且接收的结果(数组)用于填充listview。就像AutoCompleteTextView一样,而是在listview中显示结果。
我正在使用 HandlerThread 来执行此查询并填充列表视图,我已在 onQueryTextChange 中实现了该功能。
但问题是显示结果需要很长时间。用户输入输入后显示结果。但是,我希望在用户输入文本时显示结果(如Google建议的那样)。我怎么能这样做?
答案 0 :(得分:0)
我认为Google会在其服务器上使用缓存结果来加快对查询的响应速度。您可以使用MemCache或Varnish之类的东西来更快地提供结果。如果结果需要搜索,您还可以使用Apache Solr或Lucene等搜索引擎来提高速度。
Google还将拥有非常优秀的服务器基础架构,其缓存结果遍布全球,因此始终靠近用户。结果可能因服务器而异,因此它们可以提供本地用户所需的内容。我记得几年前的计算基于试图改善在线游戏的响应时间,欧洲就像是来自北美的十分之一秒。
您也可以伪造此信息。您可以将预期用户想要的结果下载到他们的设备上,并从设备上的数据库中填充自动完成。还可以同时向服务器发送请求,并在从服务器收到响应后更新自动完成结果。这在某种程度上取决于您搜索的复杂程度。如果只有有限数量的结果,您可以轻松地将它们全部存储在设备上。