一段时间后停止线程

时间:2011-06-21 12:12:47

标签: android

我正在编写一个游戏,其中一段时间​​后线程必须停止。用户未能完成特定级别。我正在使用一个线程。如何在指定的时间后停止此线程并显示另一个视图。我该怎么做。以下代码延迟了时间限制启动线程。

Thread t = ... t.join(timelimit); 
if (t.isAlive) 
t.interrupt();

如何运行线程并在一段时间后关闭它。

4 个答案:

答案 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);