Java/Android-通过网络提供高效的自定义搜索建议

Java/Android-通过网络提供高效的自定义搜索建议,java,android,multithreading,search,Java,Android,Multithreading,Search,这可能有点奇怪(这就是我检查堆栈溢出的原因),但我正在编写一个带有搜索小部件的Android应用程序,它将在搜索建议弹出窗口中返回自定义结果(如下面的屏幕截图所示) 问题是,我正在从web API返回搜索建议 我创建了一个自定义内容提供程序,它在query()方法中执行以下操作,尽管我的问题是,在将每个字母输入搜索输入字段后调用query()方法,这意味着如果我键入一个10个字母长的搜索词(例如),它将向web API发送10个搜索查询 public Cursor query(final Ur

这可能有点奇怪(这就是我检查堆栈溢出的原因),但我正在编写一个带有搜索小部件的Android应用程序,它将在搜索建议弹出窗口中返回自定义结果(如下面的屏幕截图所示)

问题是,我正在从web API返回搜索建议

我创建了一个自定义内容提供程序,它在query()方法中执行以下操作,尽管我的问题是,在将每个字母输入搜索输入字段后调用query()方法,这意味着如果我键入一个10个字母长的搜索词(例如),它将向web API发送10个搜索查询

public Cursor query(final Uri uri,
                    final String[] projection,
                    final String selection,
                    final String[] selectionArgs,
                    final String sortOrder) {

    // Query the web API here

    final MatrixCursor cursor = new MatrixCursor( /* populate with columns */ );

    // Add results from web API to cursor

    return cursor;
}
为了在iOS版本的应用程序上解决这个问题,我设置了一个计时器,该计时器在0.7秒后执行,然后执行web API调用。此计时器在每次按键后重置,因此用户必须在显示结果之前暂停键入

我可以在iOS上这样做,因为搜索结果可以异步返回,尽管在Android上,query()方法需要同步返回结果


有没有一种方法可以在Android上做类似的事情,我可以设置一个计时器,或者我这样做对自定义搜索建议来说是错误的?

你使用的是Android.widget.SearchView吗?@pskink某种程度上,我实际上使用的是支持库中的SearchView(Android.support.v7.widget.SearchView),但我认为它们是等效的。这是为什么?我没有SV方面的经验,所以我不知道如何“控制”查询操作,对不起,请问您是否以某种方式解决了这个问题?嗨@marson,很抱歉,我最后没有解决这个问题。客户端对应用程序在当前状态下的性能非常满意,因此我没有更多的时间来处理它