Apache flex AdobeAIR发行

Apache flex AdobeAIR发行,apache-flex,air,flex3,Apache Flex,Air,Flex3,我有一个AdobeAIR应用程序,它带有一个显示一些在线数据的图表组件。 图表组件必须显示一组大约10个参数。 应用程序有一个计时器来显示当前系统时间 图表组件从TimeRussing调用,使用可绑定对象,如下所示。单独的可绑定对象用于防止计时器延迟 private function onTimerEvent(event:TimerEvent):void { //Update time in screen oCurrDate = new Date(); curT

我有一个AdobeAIR应用程序,它带有一个显示一些在线数据的图表组件。 图表组件必须显示一组大约10个参数。 应用程序有一个计时器来显示当前系统时间

图表组件从TimeRussing调用,使用可绑定对象,如下所示。单独的可绑定对象用于防止计时器延迟

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;  
}
Iam在图表的更新事件中使用calllater函数,如下所示。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天后,更新仅在鼠标移动时发生。当我移动鼠标时,图表中显示的时间和数据都会更新

我分析了应用程序,发现没有内存泄漏问题。我正在记录所有的错误,但我也没有在日志中得到任何错误。一切似乎都很奇怪

是因为使用了calllater函数。 计时器仍在运行,但帧更新未发生。 我使用的是Flex SDK3.3和Flex AIR版本2.0.4.13090


请指导我解决此问题。

请阅读计时器的文档

计时器设置为运行的总次数。如果repeat count设置为0,则计时器将无限期地继续,最多持续24.86天,或者直到调用stop方法或程序停止。如果重复计数不为零,计时器将运行指定的次数。如果repeatCount设置为等于或小于currentCount的总数,则计时器将停止并不会再次启动

最大值是由于int的最大值,这是计时器用来存储其当前计数的值。int的最大值为2147483647。2147483647/24.86天/1440分钟/60秒/1000毫秒等于1给或取,与文档编号的舍入方式不同,这与内部时钟存储计时器运行时每毫秒的计数这一事实一致

因此,您无法设置修复此问题的选项。相反,您可以绕过它,假设实际上没有任何东西依赖于计时器的值。每次计时器运行时,调用

timer.reset();
timer.start();
这会将计时器重置为0并重新启动,这意味着您将永远不会达到24.86天的限制,除非您的延迟超过不可能达到的时间

此外,我想指出,您正在运行的Flex和AIR版本已经严重过时。现在两人都快5岁了。AIR甚至可能无法在较新版本的Windows和OS X上正常运行,因为它根本无法在移动设备上运行。如果一切正常,这没什么大不了的,但是知道很多海报总是很好的,所以不要意识到他们的Flex和AIR SDK是多么过时


谢谢你的回复,乔希。我们添加了计时器重置和启动选项。但仍然存在相同的问题名称更新停止。还有一件事是UI更新在某个随机间隔后停止。这不一定是20天或21天。有时在连续跑一周后也会发生。