2012-04-13 11 views
0

私はスレッドでスレッドを実行しています。これはコードです:スレッド内のタイマを停止する

timer = new Timer(); 
start_timer = new Thread(new Runnable() { 
    public void run() { 
    timer.schedule(new TimerTask() { 

     @Override 
     public void run() { 
     myHandler.post(new Runnable() { 
      public void run() { 
      Log.e("asd", String.valueOf(tmp_chiamata_id)); 

      //do somethings 

      Toast.makeText(getApplicationContext(), start_timer.getState().toString(), Toast.LENGTH_LONG).show(); 
      } 
     }); 
     } 
    }, 0, 1000); 
    } 
}); 
start_timer.start(); 

私はこれを書いタイマーを停止するには:

if(timer != null){ 
     timer.cancel(); 
     start_timer.interrupt(); 
} 

問題はlogcatストップがASDを表示するということですが、トーストが中断メッセージを表示し続けます。 start_timer.stop()でスレッドを停止しようとしましたが、とにかく動作しません。どのようにできるのか? おかげで、マティア

+0

あなたはタイマーが自分のスレッドを正しく開始することを知っていますか?何かあなたが行っていることは、ハンドラを通して行わなければならない効果があります – L7ColWinters

+0

私は解決しました。タイマとスレッドが正しく停止していますが、これら2つのオブジェクトに依存しない別のエラーがありました – pindol

答えて

0

を送信する方が簡単です。ドキュメントに記載されているように、

"タスクに他の参照がない場合は、この呼び出しの後で自由にガベージコレクションされます。

関連する問題