我的应用程序有问题 它在向 EditText 字段发送垃圾邮件后崩溃 如何在执行“DoSearch”之前向代码添加延迟?
即,当编辑EditBox时,应用程序必须空闲1秒,如果它再次被编辑,如果为真,则等待另一秒,如果为假,则执行DoSearch
希望你能理解我的情况
et = (EditText) findViewById(R.id.Searchfield);
et.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) { }
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
public void onTextChanged(CharSequence s, int start, int before, int count) {
new DoSearch().execute();
}
});
编辑:好的,我解决了问题,我将 int searchCount 定义为 0 每次更改 TextEdit 时,它被称为延迟处理程序延迟处理程序仅通过检查 searchCount 是否等于最后一个延迟处理程序调用在最后一个延迟处理程序调用上执行 DoSearch
et = (EditText) findViewById(R.id.SearchCoupon);
et.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) { }
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
public void onTextChanged(CharSequence s, int start, int before, int count) {
searchCount++;
SearchHandler.sendMessageDelayed(SearchHandler.obtainMessage(searchCount), 1000);
}
});
private Handler SearchHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
if(msg.what == searchCount) {
new DoSearch().execute();
System.out.println("Success" + searchCount + "=" + msg.what);
}
else {
System.out.println(msg.what + " - " + searchCount);
}
}
};
这个方法有没有改进的地方?还是它实际上是一种有效的方法?