Thread.sleep停止整个函数android

时间:2013-12-07 16:43:17

标签: 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.printStackTrace();
    }
tobox.setText(meaning.replace("/", "\n"));

我想要更改收件箱的文本,然后在0.5秒后更改收件箱的文本。

但是,执行此操作时,整个功能会延迟,然后发件箱和收件箱的文本会同时更改。

我做错了什么?对不起,如果这很简单;我是java的新手。

1 个答案:

答案 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线程中运行。