0

我的应用程序使用来自 Web 服务器的数据。在网站上,您可以使用一些需要几毫秒才能运行的 ajax 调用来获得自动完成功能。但在 android 的情况下,我需要从站点获取所有关键词,将它们存储在一个数组中,制作 n 适配器并将其设置为 AutoCompleteTextView。问题是我在服务器上有一些 10K 关键字,所以获取如此庞大的数据是一个问题。那么在我的情况下还有其他方法可以实现自动完成吗?谢谢你

4

2 回答 2

2

您显然必须在非 UI 线程中预取数据,以免 ANR 应用程序出现故障,并以某种本地缓存或服务的形式使其可访问,以免重复获取相同的数据。

选项按从最简单到最复杂的顺序排列:

  1. 使用 anAsyncTask并将结果存储在某种静态变量中。
  2. 使用AsyncTask类似 (1) 中的概念,但将结果存储在缓存中,就像在 Guava 中找到的那样: http ://code.google.com/p/guava-libraries/wiki/CachesExplained
  3. 构建服务:http: //developer.android.com/reference/android/app/Service.html#WhatIsAService。服务的架构可以根据调用的复杂程度进行分层。如果您从 ajax 调用中检索的域很复杂并且不仅仅用于此自动完成功能,请查看存储库模式。
于 2012-05-26T06:53:44.910 回答
0

进行类似于网站上实现的自动完成不是更好的主意,即当用户键入一定数量的字符时,会获取建议并将其显示在下拉列表中。我相信普通用户最多会使用 100 个关键字(取决于您正在制作的应用程序)。这就是我在自己的应用程序中所做的,它与您想要实现的目标有相似之处。我当然使用 AsyncTask 来获取建议。

如果您必须下载所有 10k 关键字,为什么不使用关键字创建一个静态数组(假设它们在数据库中没有更改)。

于 2012-05-30T10:45:26.550 回答