2011-08-11 2 views
0

J'essaie de charger une sous-application fenêtrée dans une autre application fenêtrée. L'exigence consiste à remplacer une application chargée par une autre par une action de l'utilisateur. J'ai essayé la méthode documentée de unloadAndStop() sur le swfLoader dans l'application principale fenêtrée, mais de toute façon pendant le profilage de mémoire je pourrais voir les instances de ces applications ont été maintenues dans la mémoire même après l'exécution explicite de garbage collection.Erreur de mémoire lors de l'utilisation de SWFLoader dans Adobe AIR

Où comme Si je fais ces applications fenêtrées sous forme de modules, puis que j'essaie de les charger en utilisant le Moduleloader, les choses fonctionnent correctement et les modules non chargés sont retirés de la mémoire.

Quelqu'un a déjà fait face au même problème?

+1

Pourquoi voudriez-vous jamais charger une application dans une application? À quoi ça sert? Charger les modules à la place ... –

+0

Quelle est la version de votre SDK? Il peut y avoir une fuite de mémoire dans le SDK, vérifiez bugs.adobe.com. –

+0

Merci pour votre réponse. @J_A_X: Je souhaite créer un ensemble d'applications qui fonctionnent de manière indépendante pour le Web et qui sont évidemment intégrées ensemble dans le cas d'AIR. Je souhaite réutiliser l'intégralité du code, pour une meilleure maintenance. – Harshal

Répondre

0

Tout d'abord, vous devez charger une application dans une application. Toutes sortes de choses folles peuvent arriver. J'ai rencontré votre situation dans le passé. Ce que j'ai fait est de séparer mon interface utilisateur/produit pour toute tâche d'application ou de module. Par exemple:

<?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> 

ou

<?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> 

Vous voyez où je veux en venir? Vous avez maintenant un composant réutilisable « principale » pour votre produit peut être utilisé dans quel contexte, même le WindowedApplication un :)