thread = new Thread()
{
@Override
public void run() {
while(!requestedToExit)
{
SystemClock.sleep(3000);
Log.d("debug", "in");
}
}
};
所以一个按钮有一个事件,每次我点击它都会启动线程(如果前一个线程没有活动)。
所以我尝试使用thread.start()但是它已经启动了线程。我试过.run(),没有任何反应,我每次点击按钮都会尝试,并且可以再次运行它,创建一个新线程并启动它:没有。
一些想法?
使用Runnable:
r= new Runnable(){
public void run() {
while(!requestedToExit)
{
Log.d("debug", "in");
SystemClock.sleep(3000);
}
}
};
然后我在听众中使用:
thread = new Thread(injection);
thread.start();
但我只是第一次看到调试,他从未进入过调试。
提前致谢
答案 0 :(得分:5)
来自JavaDoc -
不止一次启动线程永远不合法。特别是,a 一旦完成执行,线程可能无法重新启动。
相反,使用java.lang.Runnable
并创建一个新线程以在必要时运行它。
您需要做的是:
Runnable r = new Runnable() {
public void run() {
....
}
};
然后,当你想要启动时:
Thread t = new Thread(r);
t.start();
您需要始终创建一个新线程来运行那个可运行的线程。