2011-12-12 12 views
3

私は簡単な質問がありますが、どうすればタイマーを止めることができますか?タイマーを停止するにはどうしたらいいですか?

Button bCancel = (Button)findViewById(R.id.bt1); 
bCancel.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      finish(); 
      startActivity(new Intent("com.jom.testcdt2.CANCELCLASS")); 

     } 
    }); 


    final Thread logoTimer = new Thread(){ 
     public void run(){ 
      try { 
       int logoTimer = 0; 
       while (logoTimer < 10000) { 
        sleep(100); 
        logoTimer = logoTimer + 100; 

       } 
       startActivity(new Intent("com.jom.testcdt2.CLEARSCREEN")); 
      } catch (Exception e) { 
       // TODO: handle exception 
       e.printStackTrace(); 
      } 
      finally{ 
       finish(); 
      } 
     } 
    }; 
    logoTimer.start();  
} 

私はボタンbCancelを押すと、それは新しい活動を開始しますが、タイマーがまだ実行されていると10秒後にそれがCLEARSCREENを開始します。クリックするとタイマーが停止します。どうやってやるの?

+0

logoTimer.interrupt()を試してみましたか? –

+0

@JanOIMajtiはフラグ変数を割り当て、trueの場合はwhileループを中断します – Hades

+0

ループは毎秒音を使用します – JanOlMajti

答えて

5

私はCountDownTimerを使用することをお勧めします:

final CountDownTimer myTimer = new CountDownTimer(10000, 5000) { 
@Override 
public void onFinish() { 
    //DO SOMETHING AFTER 10 000 ms 
    } 

    @Override 
    public void onTick(long millisUntilFinished) { 
    //DO SOMETHING EVERY 5 000 ms until stopped 
    } 
} 
myTimer.start() //Starts it 
myTimer.cancel() //Stops it 

、代わりの

​​3210

を書いて、あなたが

(new Intent(YOURCLASS.this, CancelClass.class) 
+0

ありがとうございます。私はCountDownTimerを使用しています。タイマーを停止したいときは、myTimer.cancel();でなければなりません。 – JanOlMajti

+0

ああ、そうです、私はそれを編集します。これはあなたのために働いて聞いてよかった! – Force

+1

(新しいインテント(YOURCLASS.this、CancelClass.class)これもありがとう、簡単な方法です。 – JanOlMajti

3

を使用する必要がありますあなたがチェックするブール値を持つように試みることができますwhileループでは、キャンセルボタンを押したときにtrueに設定します。

boolean pressedCancel = false; 
.... 

while (logoTimer < 10000 && !pressedCancel) { 
    .... 
+0

はい、試しましたが、onClickでは何とかtrueに設定できませんでした – JanOlMajti