我有扩展线程的类,并且在其中一个方法中我添加了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秒钟的问题,为什么会这样?
答案 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