我的应用使用来自网络服务器的数据。在网站上,您可以使用一些需要毫秒才能运行的ajax调用来获得自动完成功能。但是在android的情况下我需要从网站获取所有关键词,将它们存储在一个数组中,制作n个适配器并将其设置为AutoCompleteTextView。问题是我在服务器上有一些10K的关键字,所以获取如此庞大的数据是一个问题。那么在我的案例中有没有其他方法可以实现自动完成?谢谢
答案 0 :(得分:2)
您显然必须在非UI线程中预取数据,以免ANR应用程序,并以某种本地缓存或服务的形式访问它,以便不获取相同的数据反复。
选项按最简单到最复杂的顺序排列:
AsyncTask
并将结果存储在某种静态变量中。AsyncTask
或类似概念,但将结果存储在缓存中,如Guava中的那些:http://code.google.com/p/guava-libraries/wiki/CachesExplained 答案 1 :(得分:0)
制作类似于网站上实现的自动完成功能并不是一个更好的主意,即当用户键入一定数量的字符时,会在下拉列表中提取并显示建议。我相信普通用户最多会使用100个关键字(取决于您正在制作的应用)。这就是我在自己的应用程序中所做的事情,它与您要实现的目标有相似之处。我当然使用AsyncTask来获取建议。
如果您必须下载所有10k关键字,为什么不只使用关键字创建一个静态数组(假设它们在数据库中没有变化)。