Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Thread.sleep停止整个函数_Java_Android_Multithreading_Function_Delay - Fatal编程技术网

Java Thread.sleep停止整个函数

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

我有一个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"));
我希望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不会对线程进行时间切片(或多任务)。例如,您正在等待死锁的解决—您甚至不需要
新的处理程序()
,只需调用