大家好我想在方法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) {
......
你能帮帮我吗?
我想只在活动被破坏时停止计时器!
谢谢......
答案 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()