Java Thread.sleep停止整个函数
我有一个java函数,我想在中间延迟。Java Thread.sleep停止整个函数,java,android,multithreading,function,delay,Java,Android,Multithreading,Function,Delay,我有一个java函数,我想在中间延迟。 frombox.setText(simpchi[rannum] + "\n[" + pinyin[rannum] + "]"); String meaning = meanings[rannum]; try { Thread.sleep(500); } catch (InterruptedException e) { Thread.currentThread().interrupt(); e.prin
frombox.setText(simpchi[rannum] + "\n[" + pinyin[rannum] + "]");
String meaning = meanings[rannum];
try {
Thread.sleep(500);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
e.printStackTrace();
}
tobox.setText(meaning.replace("/", "\n"));
我希望frombox的文本更改,然后在0.5秒后,tobox的文本更改
但是,当执行此操作时,整个函数会延迟,然后frombox和tobox的文本会同时更改
我做错了什么?对不起,如果这真的很简单;我对java非常陌生。您不应该在UI线程中调用
Thread.sleep()
<永远不要强>
你应该做什么:
Handler handler = new Handler();
handler.postDelayed(new Runnable(){
public void run(){
tobox.setText(meaning.replace("/", "\n"));
}
}, 500); // 500 ms
或者干脆(归功于zapl):
tobox.postDelayed(new Runnable(){
public void run(){
tobox.setText(meaning.replace("/", "\n"));
}
}, 500); // 500 ms
这样,第二个settext将被延迟,并在UI线程中运行。thread.sleep()今天是什么情况?我只是在另一个问题上写了这个。要理解sleep(),必须理解线程。睡眠不应该仅仅用来造成延迟。有很多线程方法会导致代码暂停并在稍后执行,例如postdayed()。sleep()用于向CPU提供处理资源,以便在不需要执行线程时,CPU不会对线程进行时间切片(或多任务)。例如,您正在等待死锁的解决—您甚至不需要
新的处理程序()
,只需调用