这可能有点奇怪(这就是我正在检查Stack Overflow的原因)但我正在做的是编写一个带有搜索小部件的Android应用程序,它会在搜索建议弹出窗口中返回自定义结果(如下面的屏幕截图)。
我正在从Web API返回搜索建议。
我已经创建了一个自定义内容提供程序,它在query()方法中执行以下操作,虽然我的问题是,但是在将每个字母输入到搜索输入字段后调用query()方法 - 这意味着如果我输入一个长度为10个字母的搜索词(例如),它会向网络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上做类似的事情我可以设置一个计时器,或者我是否采用错误的方式进行自定义搜索建议?