我做了一个线程,定期将String发送回主线程。 我把这个帖子放在某个功能上。
当我按下某个按钮时,将调用函数并完成工作。
问题是当我按下该按钮两次时。
两个线程正在将其String发送到主线程。 (他们完全一样,但不同的字符串。)
但是当线程再次启动时,我不需要第一个线程。
他们以任何方式杀死第一个线程吗?
这里是代码。
private void speller_textbox(final String string){
final int strlen = string.length();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
int cursor= 0;
while(cursor != strlen){
try{
Message message = Message.obtain();
message.obj = string.subSequence(0,cursor);
txt_handler.sendMessage(message);
cursor++;
Thread.sleep(100);
}catch (Exception e){
e.printStackTrace();
}
}
}
});
thread.start();
}
txt_handler在主线程上。
答案 0 :(得分:-1)
首先从方法中替换您的工作线程。比:
private Thread workingThread;
//.....
private void speller_textbox(final String string){
if (workingThread != null && workingThread.isAlive()) {
workingThread.interrupt();
}
final int strlen = string.length();
workingThread = new Thread(new Runnable() {
@Override
public void run() {
int cursor= 0;
while(cursor != strlen){
try{
Message message = Message.obtain();
message.obj = string.subSequence(0,cursor);
txt_handler.sendMessage(message);
cursor++;
Thread.sleep(100);
}catch (Exception e){
e.printStackTrace();
}
}
}
});
thread.start();
}