Android 一段时间后停止线程
我正在编写一个游戏,在该游戏中,一个线程在指定的时间段后必须停止。用户未能完成特定级别。我正在使用一个线程。如何在指定的时间段后停止该线程并显示另一个视图。我如何做到这一点。以下代码将线程的启动延迟了一个时间限制Android 一段时间后停止线程,android,Android,我正在编写一个游戏,在该游戏中,一个线程在指定的时间段后必须停止。用户未能完成特定级别。我正在使用一个线程。如何在指定的时间段后停止该线程并显示另一个视图。我如何做到这一点。以下代码将线程的启动延迟了一个时间限制 Thread t = ... t.join(timelimit); if (t.isAlive) t.interrupt(); 如何运行线程并在一段时间后关闭它。您可以使用以下代码在给定的指定时间后运行 Handler handler = new Handler();
Thread t = ... t.join(timelimit);
if (t.isAlive)
t.interrupt();
如何运行线程并在一段时间后关闭它。您可以使用以下代码在给定的指定时间后运行
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
// after this is rung
}
}, 5000);
你应该用这样的东西声明你的线程
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异常。您的工作线程
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();
}
}
你的停止线
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();
}
}
我更喜欢从外部中断线程,并在短时间间隔内检查中断状态:
try {
while (!Thread.currentThread.interrupted()) {
doSth();
}
} catch (InterruptedException e) {
// finished
}
在这种情况下,运行应该是不稳定的(或者您需要同步对它的访问)