2012-03-02 3 views
0
위한 오디오 프로필 스위처 작업

메신저 안드로이드 전체 프로젝트의 일환으로, 나는 다음과 같은 타이머 코드를 사용하여 백그라운드에서 실행되는 서비스가 있습니다안드로이드 데브 : 타이머 동적 간격 기간을 존중하지

timer.scheduleAtFixedRate(new TimerTask() { public void run() {.....}, 0, nextUpdateInterval);

타이머가 동적으로 생성 된 다음 업데이트 간격 기간을 준수하지 않는다는 것이 알려지면 ... nextUpdateInterval은 처음 실행을 위해 30000 (30 초)으로 초기화되는 개인 정적 long으로 선언됩니다. 일단 프로파일이 발견되면 수학을하고 nextUpdateInterval을 업데이트합니다 ... 디버깅 목적으로 nextUpdateInterval 값을 시간/분으로 변환하고 calcul ATION ... 그것은 다음 타이머 실행이 이루어져야 시간과 분, 나를 보여처럼 ... 예상대로 작동

nextUpdateInterval 계산 : 프로파일이 발견되면 long entirePeriodDiff = toTimeMiliseconds - fromTimeMiliseconds;

다음, 내가 계산하려면 nextUpdateInterval long elapsedTime = rightNowDate.getTime() - fromDate.getTime();

하고 난 업데이트 : elapsedTime과 같이 nextUpdateInterval = entirePeriodDiff - elapsedTime;

한 예 시나리오 : '일'의 프로필 4:30 오후 오전 9 시부 터 설정, 서비스/응용 프로그램이 2:02 PM에 실행 (EST), 내 토스트 메시지가 지속적으로 실행되고 행동합니다 얼마나 많은 시간이 남았는지 알려주는 카운트 다운 ...이 경우 2:28 그리고 감소 ... 이상적으로 이것은 2:28이 올 때까지 표시되지 않아야합니다 ... 어떤 아이디어입니까? android doc 당으로

답변

0

은 :

고정 빈도 실행으로

, 작업의 각 연속 실행의 시작 시간은 이전 실행이 발생한 경우에 관계없이 예정이다. 지연으로 인해 타이머가 제 시간에 작업을 시작하지 못하게되면 일련의 일련의 실행이 발생할 수 있습니다.

나는 ... 당신은 그 문제가, 난 그냥 각 nextUpdateInterval에 대한 새로운 타이머/TimerTask를을 만들어 결국되었다 그래 대안 '고정 기간'

+0

을 고려할 필요가있을 수 있습니다, 그 이유가 될 수 주셔서 감사합니다 생각 당신의 의견 –