Android Java的计时器



我在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()中。

我希望这对您有帮助。

最新更新