【问题标题】:Adobe AIR issueAdobe AIR 问题
【发布时间】:2014-09-16 21:30:43
【问题描述】:

我有一个 Adob​​e AIR 应用程序,其中包含一个显示一些在线数据的图表组件。 图表组件必须显示一堆参数,其中大约 10 个。 该应用程序有一个计时器来显示当前系统时间。

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

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;  
}

我在图表的更新事件中使用了 calllater 函数,如下所示。 updateParameter() 将更新每个参数的dataprovider并绘制它。

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。

请指导我解决此问题。

【问题讨论】:

    标签: apache-flex air flex3


    【解决方案1】:

    请阅读Timer 的文档。

    计时器设置为运行的总次数。如果重复计数设置为 0,则计时器将无限期地继续,最长可达 24.86 天,或者直到调用 stop() 方法或程序停止。如果重复计数不为零,则计时器运行指定的次数。如果 repeatCount 设置为等于或小于 currentCount 的总数,则计时器停止并且不会再次触发。

    最大值是由于int 的最大值,这是计时器用来存储其当前计数的值。 int 的最大值为 2,147,483,6472147483647 / 24.86 days / 1440 minutes / 60 seconds /1000 milliseconds 等于 1(给或取,与文档数字四舍五入方式的差异),这与 Timer 运行时内部时钟每毫秒存储其计数的事实一致。

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

    timer.reset();
    timer.start();
    

    这会将计时器重置为 0 并重新启动它,这意味着您永远不会达到 24.86 天的限制,除非您的 delay 比这更长(不可能)

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

    【讨论】:

    • 谢谢你的回复,乔希。我们添加了计时器重置和启动选项。但仍然存在相同的问题(帧更新停止)。另一件事是 UI 更新在某个随机间隔后停止。不一定是 20 或 21 天。有时它也会在连续运行一周后发生。
    猜你喜欢
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多