2016-07-29 5 views
1

timer.cancel()メソッドを呼び出した後、もう一度TimerTaskが実行されます。 stopBusTimer()メソッドを呼び出した後にTimerMethodを実行する必要はありません。timer.cancel()メソッドを呼び出すと、TimerTaskがもう一度実行されます

誰かがなぜそれが起こっているのか説明できますか?

busTimer = new Timer(); 
    busTimer.schedule(new TimerTask() { 
     @Override 
     public void run() { 
      TimerMethod(mSelectedRoute); 
     } 
    }, 0, Consts.BUS_TIMER_INTERVAL); 


private void stopBusTimer() { 
    if (busTimer != null) { 
     busTimer.cancel(); 
     busTimer.purge();  
     busTimer = null; 
     Log.v(LOG_TAG, "stop BusTimer"); 
    } 
} 

答えて

3

cancel方法は、以下のすべての実行ではなく、現在の1を停止します。メソッドの実行には長い時間がかかりますが、cancelを呼び出した時点でメソッドがすでに実行されています。

cancelを呼び出す方法は、機能の中から呼び出すことをお勧めします。

+0

お返事ありがとうございます。私はそれがどのように機能するのか理解した今私はrun()関数の中で送信しているhttprequestを取り消す方法を理解する必要があります。 –

関連する問題