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() でスレッドを停止しようとしましたが、とにかく機能しません。どのようにできるのか?ありがとう、マティア

4

2 に答える 2

0

おそらく、タイマー オブジェクトから purge() メソッドを呼び出すと役立つでしょう。ドキュメントが言うように、

「キャンセルされたすべてのタスクをタスク キューから削除します。タスクに他の参照がない場合は、この呼び出しの後、自由にガベージ コレクションを実行できます。」

于 2012-04-13T19:45:23.217 に答える
0

ハンドラーを使用して遅延メッセージを送信する方が安定しており、簡単です

http://www.tutorialforandroid.com/2009/01/using-handler-in-android.html

于 2012-04-13T19:41:15.530 に答える