这可能有点奇怪(这就是我检查 Stack Overflow 的原因),但我正在做的是编写一个带有搜索小部件的 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上做类似的事情,我可以设置一个计时器,或者我是否以错误的方式来获取自定义搜索建议?