Утечка памяти при использовании 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
один:)