fut*_*eer 12 multithreading searchview
我正在编写一个搜索函数来访问库网站.当提交查询字符串时,程序启动一个新线程来解析Web上的信息.它在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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
找出为什么单击按钮一次会导致 onQueryTextSubmit 触发两次本身就是一个问题,您可能无法解决,因为它是由可能有错误的操作系统控制的。真正的问题是如何正确处理快速连续单击按钮两次或多次的情况,这可能会产生相同的效果。我建议将 list.clear() 移动到填充列表的同一位置。
| 归档时间: |
|
| 查看次数: |
4109 次 |
| 最近记录: |