我有一个java函数,我想在中间延迟。
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"));
我想要更改收件箱的文本,然后在0.5秒后更改收件箱的文本。
但是,执行此操作时,整个功能会延迟,然后发件箱和收件箱的文本会同时更改。
我做错了什么?对不起,如果这很简单;我是java的新手。
答案 0 :(得分:2)
您不应该在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线程中运行。