Утечка памяти при использовании SWFLoader в Adobe AIR

Я пытаюсь загрузить оконное вложенное приложение в другое оконное приложение. Требование заменить одно загруженное приложение другим на действие пользователя.

Я попробовал документированный метод unloadAndStop() на swfLoader в основном оконном приложении, но каким-то образом во время профилирования памяти я мог видеть, что экземпляры этих приложений сохранялись в памяти даже после явного запуска сборки мусора.

Где, как если бы я сделал эти оконные приложения как модули, а затем попытался загрузить их с помощью загрузчика модулей, все работает гладко, а выгруженные модули удаляются из памяти.

Кто-нибудь сталкивался с такой же проблемой раньше?

2 ответа

Решение

Во-первых, вы должны загрузить приложение в приложении. Все виды сумасшедших вещей может произойти. Я сталкивался с вашей ситуацией в прошлом. То, что я сделал, это выделил мой фактический пользовательский интерфейс / продукт для любой задачи приложения или модуля. Например:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx">
   <local:YourMainUI width="100%" height="100%" />
</s:Application>

или же

<?xml version="1.0" encoding="utf-8"?>
<s:Module xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx">
   <local:YourMainUI width="100%" height="100%" />
</s:Module>

Вы видите, куда я иду с этим? Теперь у вас есть повторно используемый "основной" компонент для вашего продукта, который можно использовать в любом контексте, даже WindowedApplication один:)

Другие вопросы по тегам