我在Activity2中有2个活动,当活动创建计时器启动时,我有一个计时器,在Activity on_destroy中启动了timer_task.cancel((;但是,第二次打开活动2是创建新的计时器任务,而未取消或销毁最后一个计时器,而2个计时器是在一个活动中运行
我的代码
private TimerTask mTimerTask;
private void doTimerTask(){
nCounter = 4;
qtimer.setMax(20);
if(mTimerTask!=null) {
mTimerTask.cancel();
}
mTimerTask = new TimerTask() {
public void run() {
handler.post(new Runnable() {
public void run() {
Log.d("Timerrrr",nCounter+"");
if(nCounter<1){
Finished();
}else {
qtimer.setProgress(nCounter);
nCounter--;
}
}
});
}};
// public void schedule (TimerTask task, long delay, long period)
t.schedule(mTimerTask, 0, 1000); //
}
private void stopTask() {
if (mTimerTask != null) {
Log.d("nCounter canceled",nCounter+"");
mTimerTask.cancel();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
mTimerTask.cancel();
MainActivity.this.finish();
}
尝试这个...
public void stopTimerTask(View v) {
//stop the timer, if it's not already null
if (mTimerTask != null) {
mTimerTask.cancel();
mTimerTask = null;
}
}
您在哪里称呼您的stopTask()
方法?
我建议不要将mTimerTask.cancel();
放入onDestroy()
中,而是将其放在onStop()
中。
我希望这对您有帮助。