Недавно обновлен до AIR 3.1 SDK и возникла проблема остановки показа, связанная с InvokeEvent на мобильных устройствах. Приложение отправляет новый InvokeEvent каждый раз, когда вы меняете ориентацию на устройстве. И это не очищает массив "queuedEvents". Хуже всего то, что новое событие, которое оно отправляет каждый раз, является клоном последнего полученного. В случае нашего приложения это будут параметры, которые сообщают приложению о загрузке определенных данных. Таким образом, каждый раз, когда вы меняете ориентацию, приложение повторно запускает эту последовательность загрузки, вызывая множество нежелательных действий.
Код довольно просто проверить:
protected function preinitializeHandler(event:FlexEvent):void
{
NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, onInvoke);
}
protected function onInvoke(event:InvokeEvent):void
{
trace(event.toString());
}
Теперь каждый раз, когда вы меняете ориентацию, вы видите оператор трассировки, и коллекция event.target.queuedEvents продолжает расти, не убирая ни одно из ранее перехваченных событий.
Откат к AIR 3.0 исправляет это поведение. И я смог продемонстрировать это в двух отдельных проектах.
Мне бы очень хотелось услышать об исправлении или обходном пути, чтобы мы могли выпустить 3.1, но в любом случае я подумала, что заставлю других осознать эту проблему, так как я не смогла найти что-либо об этом мой поиск.
Для получения дополнительной информации об оборудовании: это не происходит в эмуляторе или моем LG Slate, но это происходит каждый раз, как на наших Xooms, так и на Samsung Galaxy Tab. Похоже, что это не проблема с iOS.
ОБНОВЛЕНИЕ: только что обновлен до версии-кандидата 3.2 (3.2.0.2060) и проблема остается. Наше программное обеспечение не сможет обновиться до версии 3.0 в обозримом будущем, что означает, что мы также не сможем перейти на Flex 4.6 SDK, не удалив существенную функцию нашего приложения. Это не вдохновляет нас на будущее AIR в нашей компании.
Существует несколько решений и обходных путей, которые мы могли бы использовать для исправления нашей специфической функции, но все еще существует обеспокоенность по поводу последствий наличия постоянно всплывающей очереди вызова, которая никогда не очищается. Это может привести к дополнительным проблемам при расширенном использовании приложения.
ОБНОВЛЕНИЕ 2: я разместил больше подробностей в сообщении на форуме Adobe. http://forums.adobe.com/message/4278518
Эрик Дженсен