我正在尝试在android中集成实时搜索功能。我使用自定义的自动完成小部件。小部件本身为我提供了一个阈值,仅在输入了一定数量的字符后才开始查询。但我也希望查询只在用户停止输入2秒后才开始。
当我用一个
AsyncTask
我试着挡住
doInBackground
函数的开头调用Thread.sleep()。如果用户将继续键入,程序将查看现有的任务,取消它并启动一个新任务。这是我的主意。但它并不像我所期望的那样工作。有时它发送查询,即使用户仍在键入,有时在用户停止键入后取消查询。
以下是代码片段:
一。对文本调用的函数将更改:
public void afterTextChanged(Editable s) {
if(mWidget.enoughToFilter()) {
if(mTask != null && mTask.getStatus() != Status.FINISHED) {
mTask.cancel(true);
}
mTask = new KeywordSearchLoader(mActivity,
mItems);
mTask.execute(s.toString());
}
}
try {
Thread.sleep(Properties.ASYNC_SEARCH_DELAY);
} catch (InterruptedException e) {
Log.e(TAG, "the process was interrupted while sleeping");
Log.w(TAG, e);
}
谢谢
菲尔