我正在编写一个游戏,其中一段时间后线程必须停止。用户未能完成特定级别。我正在使用一个线程。如何在指定的时间后停止此线程并显示另一个视图。我该怎么做。以下代码延迟了时间限制启动线程。
Thread t = ... t.join(timelimit);
if (t.isAlive)
t.interrupt();
如何运行线程并在一段时间后关闭它。
答案 0 :(得分:1)
你应该用这样的东西声明你的线程
public class GameLoopThread extends Thread{
private boolean running = false;
public void setRunning(boolean run){
running = run;
}
@Override
public void run(){
while(running){
}
}
}
这是更安全的方式,为了阻止你应该将运行变量设置为false。否则,如果你停止thead,你将获得一个android例外。
答案 1 :(得分:1)
你的工作线程
public class Worker extends Thread {
private boolean isRunning = true;
public void run() {
while (isRunning) {
/* do your stuff here*/
}
}
public void stopWorker() {
isRunning = false;
}
}
你的停止线程
public class Stopper extends Thread {
private Worker worker;
public void Stopper(Worker w) {
worker = w;
}
public void run() {
// wait until your timeout expires
worker.stopWorker();
}
}
答案 2 :(得分:1)
我更喜欢从外部中断线程并在短时间内检查中断状态:
try {
while (!Thread.currentThread.interrupted()) {
doSth();
}
} catch (InterruptedException e) {
// finished
}
答案 3 :(得分:0)
您可以使用下面的代码在给定的指定时间后运行。
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
// after this is rung
}
}, 5000);