最近升级到AIR 3.1 SDK并且在移动设备上遇到了关于InvokeEvent的show停止问题。每次更改设备的方向时,应用程序都会调度新的InvokeEvent。它并没有清除“queuedEvents”数组。最糟糕的是,每次发送的新事件都是收到的最后一个事件的克隆。对于我们的应用程序,这将是告诉应用程序加载某些数据的参数。因此,每次更改方向时,应用程序都会重新触发该加载序列,从而导致许多不良行为。
测试代码非常简单:
protected function preinitializeHandler(event:FlexEvent):void
{
NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, onInvoke);
}
protected function onInvoke(event:InvokeEvent):void
{
trace(event.toString());
}
现在,每次更改方向时,您都会看到trace语句,并且event.target.queuedEvents集合继续增长,同时从不清除任何先前捕获的事件。
回滚到AIR 3.0可修复此问题。我已经能够在两个单独的项目中证明这一点。
我很想听到修复或解决方法,所以我们可以使用3.1发布,但不管怎样,我想我会让其他人知道这个问题,因为我无法通过它找到任何关于它的信息。我的搜索。
有关硬件的其他详细信息:这不会出现在模拟器或我的LG Slate中,但每次在我们的Xooms和三星Galaxy Tab上都会发生这种情况。它似乎不是iOS的问题。
更新:刚刚更新到3.2版本候选版本(3.2.0.2060),问题仍然存在。我们的软件在可预见的未来无法更新3.0,这意味着我们无法升级到Flex 4.6 SDK,并且不会删除我们应用程序的重要功能。这并没有激发我们对公司AIR未来的启发。
我们可以使用一些解决方案和解决方法来修复我们的特定功能,但是仍然存在对永远不会清除的不断膨胀的调用队列的影响的担忧。与扩展使用该应用程序相比,这可能会产生其他问题。
更新2:我在Adobe论坛帖子中添加了更多细节。 http://forums.adobe.com/message/4278518
Eric Jensen