在最近百度导航开发过程中,利用AutoCompleteTextView自动补全文本框,地点检索联想输入遇到这样一个问题,由于监听输入的变化,对地点进行联想,而导致未输入结束就反复弹出poplist中断输入的情况。为了解决这个情况,在onTextChanged中加入一个延迟操作,优化体验。
这里使用到的延迟是
1、线程方式
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000);
}catch (InterruptedException e){
e.printStackTrace();
}
//输入进行的操作
//联想地点搜素
//mSuggestionSearch.requestSuggestion((new SuggestionSearchOption())
//.city(mCity).keyword(s.toString()));
}
}).start();
2、延时器
TimerTask task = new TimerTask() {
@Override
public void run() {
//联想信息list清空,每次搜索结果重新填入
suggestList.clear();
//输入进行的操作
//联想地点搜素
//mSuggestionSearch.requestSuggestion((new SuggestionSearchOption())
//.city(mCity).keyword(s.toString()));
}
};
Timer timer = new Timer();
timer.schedule(task,1000);
3、Android消息处理
推荐使用
new Handler().postDelayed(new Runnable()) {
public void run() {
//要执行的任务
}
}, 10000);
异步延迟操作还可用Handler实现