2017-09-11 1 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 = 새로운 타이머

();

입니다.

관련 문제