2017-09-11 83 views
0

我需要停止当前正在运行的计时器任务,并使用不同的延迟重新启动它。我尝试了几种方法,但没有正常工作。当我使用下面的代码时,TimerTask将在两个延迟中运行。在Android中停止并重新启动计时器任务

public void restUploadInterval(long newDelay) { 
     timerRealData.cancel(); 
     timerRealData.purge(); 
     mMqttSupporter = MqttSupporter.getInstance(); 
     Timer timerRealData = new Timer(); 
     delay = newDelay; 
     UploadingTask uploadingTask = new UploadingTask(); 
     timerRealData.scheduleAtFixedRate(uploadingTask, delay, delay); 
    } 

请让我知道我怎么可以停止当前的计时器任务,并用不同的延时,然后再次运行它。

+0

如果您创建一个计时器任务类的新实例,那么计时器任务的多个实例将在后台运行。因此,而不是创建新的对象用于新的计时器任务相同的对象。 –

回答

0

与您一样。

要以不同的时间重新启动计时器,您需要取消旧计时器并创建一个新计时器。

您的代码可能不起作用,仅仅因为您隐藏了具有相同名称的局部变量的成员变量timerRealData

尝试改变:

定时器timerRealData =新定时器();

timerRealData =新定时器();

它应该工作。