我有两个根据条件定期运行的服务。在一次条件下,服务以5秒计时器运行,而在另一个条件下,它们以10分钟计时器运行。
但是当我想从5秒切换到10分钟计时器时,它不会立即发生,而是额外运行4次。我正在取消计时器,但似乎没有工作......有代码
public final static Handler serviceHandler = new Handler(){
public void handleMessage(Message msg){
if(null != serviceTimer) {
Log.d(TAG, "Coming insisisi");
serviceTimer.cancel();
serviceTimer.purge();
serviceTimer = null;
}
serviceTimer = new Timer();
serviceTimer.scheduleAtFixedRate(new serviceMonitorAcc(service, target), DELAY_TIMER_TIME, TIMER_START_TIME);
serviceTimer.scheduleAtFixedRate(new serviceMonitorTrafficStats(service, target), DELAY_TIMER_TIME, TIMER_START_TIME);
Log.d(TAG, "TIMER STATTAA"+serviceTimer);
}
};
根据条件我设置变量DELAY_TIMER_TIME和TIMER_START_TIME的值
private void setTimerInfo(String check){
if(check != null) {
if (check.equals("enable")) {
DELAY_TIMER_TIME = 0;
TIMER_START_TIME = 5000;
} else {
DELAY_TIMER_TIME = 60000;
TIMER_START_TIME = 600000;
}
}
}
时间设置工作时间唯一问题是它没有被杀死instanlty并启动新的serviceTimer与新的计时器设置。
我还尝试分别杀死timertask serviceMonitorAcc和serviceMonitorTrafficStats,但是没有工作...任何建议或指针......