一个线程中的Thread.sleep()使UI线程也进入休眠状态

时间:2011-04-22 17:07:37

标签: java android multithreading

我有扩展线程的类,并且在其中一个方法中我添加了Thread.sleep(5000)来等待某些东西,我从onCreate()开始这个线程就像这样

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

MyClass mc = MyClass();
mc.start(); 
mc.join();
// do something

}

并在MyClass运行方法我做了类似的事情

Class MyClass extends Thread {

public void run() {
sleep(15000);
// do something
}

}

如果我运行MyClass线程(调用睡眠方法),我看到UI线程也会休眠5秒钟的问题,为什么会这样?

3 个答案:

答案 0 :(得分:5)

嗯,这是你的问题:

mc.join();

这使得当前线程(即UI)等到mc表示的线程完成其run()方法。无论如何,你想用join()做什么。

答案 1 :(得分:0)

你在MyClass线程中使用runOnUIThread还是使用处理程序?

如果您对新主题发表评论,那么一切正常吗?

答案 2 :(得分:0)

是的,该线程正在UI线程上运行。如果要在单独的线程中运行,则需要使用类似Runnable或ASyncTask的东西。

请参阅http://developer.android.com/resources/articles/painless-threading.html