Я пишу функцию поиска для доступа к веб-сайту библиотеки. И когда строка запроса отправляется, программа запускает новый поток для анализа информации в Интернете. он работает нормально на AVD, но мой HTC DesireHD неоднократно показывал результаты поиска (если реальные результаты равны 1. 2. 3. это выглядит как 1. 2. 3. 1. 2. 3.). Я установил точки останова в методе onQueryTextSubmit, обнаружил, что коды в методе onQueryTextSubmit() выполнялись дважды. и вот мой код:
sv.setOnQueryTextListener(new OnQueryTextListener(){
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
@Override
public boolean onQueryTextSubmit(String query) {
list.clear();
String str = null;
try {//encoding Chinese character
str = new String(query
.trim().getBytes(), "ISO-8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
SearchPost sp = new SearchPost(SEARCH_URL + str);
new Thread(sp).start();
return false;
}
});
protected class SearchPost implements Runnable{
public String url = "";
SearchPost(String urls){
url = urls;
}
public SearchPost() {
}
@Override
public void run() {
Message message = handler.obtainMessage();
message.what = DOWNLOAD_COMPLETE;
try{
doc = Jsoup.connect(url).get();
handler.sendMessage(message);
}catch(IOException e){
e.printStackTrace();
message.what = DOWNLOAD_FAIL;
handler.sendMessage(message);
}
}
}