java - Android TextWatcher 使用多线程读取 SQL 数据。如何关闭旧线程?
问题描述
我有一个通过创建新线程连接到数据库的功能,因为搜索功能很繁重。
textView.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(final Editable editable) {
search(textView.getText().toString());
}
});
public void search(String word) {
new Thread(new Runnable() {
@Override
public void run() {
this.wordsList = db.getWordsList(word); //big job
.
.
.
}
}).start();
}
但是当这些代码在短时间内执行多次时,程序会变慢。程序通过多次执行上述代码而挂起。
所以我想关闭前一个线程,然后打开新线程。事实上,我不需要以前线程的结果,所以我想关闭它们以提高程序速度。
解决方案
我使用了这段代码并解决了我的问题:
Executor executor = Executors.newSingleThreadExecutor();
executor.execute(new Runnable() { public void run() { /* do something */ } });
推荐阅读
- python - Numba - 无法确定 Numba 类型
- terraform - 有什么方法可以跟踪 terraform.exe 对提供者进行的 REST 调用?
- sitefinity - sitefinity 小部件搜索表
- bash - 使用 gnu find 命令匹配带有斜杠的子路径
- python - Pydap客户端UnicodeDecodeError:'utf-8'编解码器无法解码位置1的字节0x8b:无效的起始字节
- c - Segfault,我无法弄清楚原因
- javascript - 在选择 onchange 上运行 PHP 函数
- python - 使用 a+ 时找不到文件
- sql - 根据 parentId 和最小值更新数据库中的记录
- redirect - Rspec:期望(请求).to not_redirect?(redirect_to 的对面)