0

我在活动 2 中有 2 个活动,当活动创建计时器在活动 on_Destroy 中启动时,我有一个计时器,我将 timer_task.cancel(); 但是当第二次打开activity2时是创建新的定时器任务并且没有取消或销毁最后一个定时器并且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();
}
4

1 回答 1

0

尝试这个...

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()

我希望这可以帮助你。

于 2017-06-29T05:46:04.293 回答