2014-07-25 3 views
0

일부 온라인 데이터를 표시하는 차트 구성 요소가있는 Adobe AIR 응용 프로그램이 있습니다. 차트 구성 요소에는 약 10 개의 매개 변수가 표시되어야합니다. 응용 프로그램에는 현재 시스템 시간을 표시하는 타이머가 있습니다.Adobe AIR 문제

차트 구성 요소는 아래 그림과 같이 (바인딩 가능한 개체를 사용하여) 타이머에서 호출됩니다. 타이머의 지연을 막기 위해 별도의 바인드 가능 객체가 사용됩니다.

private function onTimerEvent(event:TimerEvent):void 

{ 
    //Update time in screen 

    oCurrDate = new Date(); 
    curTime = oDateformatter.format(oCurrDate).toString(); 
    oCurrDate = null; 

    //oUpdate- Bindable object to inform chart about update 
    //Call chart every 250 ms 
    oUpdate.bUpdate = !oUpdate.bUpdate; 
} 

아래 그림과 같이 차트의 업데이트 이벤트에서 콜링 기능을 사용합니다. updateParameter()는 각 매개 변수의 데이터 제공자를 업데이트하고 그 매개 변수를 그립니다.

public function onUpdateEvent(evt:PropertyChangeEvent):void 
{ 

//aPlotIndex set to 0 for first parameter 

aPlotIndex.push(0); 

this.callLater(updateParameter, aPlotIndex); 
} 

문제는 20 일에서 21 일 사이에 타이머 및 차트 업데이트가 중단되는 것입니다. 20 일 또는 21 일 후에 업데이트는 마우스 이동시에만 발생합니다. 마우스를 움직이면 표시되는 & 데이터가 업데이트됩니다.

나는 응용 프로그램을 프로파일 링했는데 메모리 누출 문제가 없음을 발견했습니다. 나는 모든 오류를 기록하지만 로그에서도 오류가 발생하지 않았습니다. 모든 것이 이상하게 보입니다.

  1. calllater 기능을 사용했기 때문입니까?
  2. 타이머가 아직 실행 중이지만 프레임 업데이트가 발생하지 않았습니까?

Flex SDK3.3 및 Flex AIR 버전 2.0.4.13090을 사용하고 있습니다.

이 문제를 해결하려면 안내하십시오.

답변

0

Timer에 대한 설명서를 읽으십시오.

타이머가 실행되도록 설정된 총 횟수입니다. 반복 횟수가 0으로 설정된 경우 타이머는 무기한으로 최대 24.86 일까지 또는 stop() 메서드가 호출되거나 프로그램이 중지 될 때까지 계속됩니다. 반복 횟수가 0이 아니면 타이머가 지정된 횟수만큼 실행됩니다. repeatCount가 currentCount와 같거나 작은 합계로 설정되면 타이머가 중지되고 다시 시작되지 않습니다.

최대 값은 타이머가 현재 카운트를 저장하는 데 사용하는 int의 최대 값 때문입니다. int의 최대 값은 2,147,483,647입니다. 2147483647/24.86 days/1440 minutes/60 seconds /1000 milliseconds은 내부 클럭이 Timer이 실행 된 밀리 초당 카운트를 저장한다는 사실과 일치하는 1 (부여 또는 가져 오기, 문서 번호가 반올림되는 방식의 차이)와 같습니다.

이 문제를 해결할 수있는 옵션을 설정할 수 없습니다. 대신 타이머의 가치에 실제로 의존하는 것이 없다고 가정하면 해결할 수 있습니다. 타이머가 실행될 때마다, 전화

0으로 타이머를 재설정하고 충돌하지 않습니다 의미, 최대가 다시 시작됩니다
timer.reset(); 
timer.start(); 

24.86 일 제한하여 delay가 더 이상보다 (하지 않는 한, 어떤이 가능하게 할 수 없음을 나타 be)

또한 Flex 및 AIR 버전이 심각하게 오래되었다는 점을 지적하고자합니다. 이 시점에서 둘 다 거의 5 세입니다.AIR은 최신 버전의 Windows 및 OS X에서 제대로 실행되지 않을 수 있으며 (따라서 모바일에서 실행되지 않을 수도 있습니다). 모든 작동하지만, 항상 좋은

+0

감사합니다 (SO에 많은 포스터가 최신 방법을 실현 자신의 Flex와 AIR SDK를이없는) 알 수 없음 큰 문제가있는 경우 대답은 조쉬. 타이머 재설정 및 시작 옵션이 추가되었습니다. 그러나 여전히 동일한 문제 (프레임 업데이트 중지)가 계속됩니다. 한 가지 더 중요한 것은 UI 업데이트가 임의의 간격 후에 중지된다는 것입니다. 그것은 반드시 20 일 또는 21 일이 아닙니다. 때로는 일주일 연속 실행 후에도 발생합니다. – softwarefellow