2011-06-21 11 views
1

スレッドを停止する必要があるゲームを作成しています。ユーザーは特定のレベルを完了できませんでした。スレッドを使用しています。指定された時間が経過したら、別のview.Howを表示します。次のコードは、スレッドの起動をtimelimitで遅らせます。いつかの間にスレッドを終了します

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

スレッドを実行して一定時間後に閉じるにはどうすればよいですか。

答えて

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(); 
    } 
} 
0

以下のコードは、指定された時間後に実行されます。

Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     public void run() { 
      // after this is rung    
     } 
    }, 5000); 
1

はあなたがfalseに実行されている変数を設定する必要が停止するためには、これは安全な方法である。この

public class GameLoopThread extends Thread{ 
private boolean running = false; 

public void setRunning(boolean run){ 
    running = run; 
} 

@Override 
public void run(){ 
    while(running){ 

    } 
} 
} 

のようなものを使用してスレッドを宣言する必要があります。それ以外の場合は、あなたはアンドロイドの例外が発生しますtheadを停止します。私は外からスレッドを中断し、短い間隔で中断状態を確認好む

+0

このケースで実行している必要があります揮発性(またはあなたはそれにアクセスする必要があります) – rurouni

+0

もちろん、ゲームこのように動作します。 – JAiro

1

try { 
    while (!Thread.currentThread.interrupted()) { 
     doSth(); 
    } 
} catch (InterruptedException e) { 
    // finished 
} 
関連する問題