在onDestroy()中停止计时器

时间:2014-06-10 14:08:20

标签: android

大家好我想在方法onDestroy中停止我的计时器,但我不知道什么是最好的解决方案...... 我在onDestroy中尝试过timer.purge()但是出错...

@Override
public void onDestroy(){

     final ToggleButton btnImbarco = (ToggleButton) findViewById(R.id.toggleButton1);
     final ToggleButton btnAtterraDecolla = (ToggleButton) findViewById(R.id.toggleButton3);
     final ToggleButton btnRitardo = (ToggleButton) findViewById(R.id.toggleButton2);

     if(!btnImbarco.isChecked() && !btnAtterraDecolla.isChecked() && !btnRitardo.isChecked())
         //STOP TIMER HERE
}

public void callAsynchronousTask(final TextView attendere, 
        final ToggleButton btnAtterraDecolla, final ToggleButton btnRitardo, final ToggleButton btnImbarco)
{
    final Handler handler = new Handler();
    Timer timer = new Timer();

    TimerTask doAsynchronousTask = new TimerTask() {       
        @Override
        public void run() {             
            handler.post(new Runnable() {

                public void run() {       
                    try {
                        FlightTask aTask =  new FlightTask(attendere,btnAtterraDecolla,btnRitardo,btnImbarco);

                        if(btnAtterraDecolla.isChecked())
                            ..........   

                        if(btnRitardo.isChecked())
                            ........... 

                        if(btnImbarco.isChecked())
                            ........

                        aTask.execute();

                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                    }
                }
            });
        }
    };
    timer.schedule(doAsynchronousTask, 0, TEMPO_ESECUZIONE_THREAD); //execute in every 50000 ms
}
@Override
protected void onCreate(Bundle savedInstanceState) {
......
你能帮帮我吗? 我想只在活动被破坏时停止计时器! 谢谢......

1 个答案:

答案 0 :(得分:3)

我通常以这种方式取消计时器: 当我启动计时器时,我将布尔值设置为true,然后在onDestroy中检查它

@Override
public void onDestroy() {
    stopUpdates();
    super.onDestroy();

}
private void stopUpdates() {
    if (isTimerRunning) {
        updateTimer.cancel();
        updateTimer.purge();
        updateTimer = null;
        isTimerRunning = false;
    }
}

http://developer.android.com/reference/java/util/Timer.html#cancel()