Hélio, Estava desde ontem "comendo" a documentação, até que alguns minutos depois que fiz o post aqui, cheguei no seguinte parágrafo:
"Because a module is loaded into a child domain, it owns class definitions that are not in the main application's domain. For example, the first module to load the PopUpManager class becomes the owner of the PopUpManager class for the entire application because it registers the manager with the SingletonManager. If another module later tries to use the PopUpManager, Adobe ® Flash® Player throws an exception." Daí, foi só adicionar a linha moduleLoader.applicationDomain = ApplicationDomain.currentDomain, que tudo fluiu exatamente como deveria. Quanto à sua pergunta, estou destruindo tudo o que não será mais utilizado quando o método é descarregado, justamente para deixar o GC trabalhar corretamente. De toda forma, obrigado! Um abraço! Diego Hordi On 4 fev, 10:16, Helio Antonio Francisco Silva <helio.afsi...@gmail.com> wrote: > cara eu uso modulos PRA TUDO e nunca tive esse tipo de problema ate por que > na teoria, quando voce carrega um modulo ele meio que vem zerado ou seja ele > e recriado. > > pergunta e. > > Ta usando referencia fraca nos listners, destruindo as variaveis antes de > descarregar o modulo pra nao ficar nada ? > lembra que os modulos sempre fica uns lixos na memoria. > > 2011/2/4 Diego Hordi <diego.ho...@gmail.com> > > > > > > > > > > > Pessoal, > > > Situação: > > Estou desenvolvendo um projeto, cuja tela principal deverá conter um > > ModuleLoader que carregará vários módulos ao longo da existência da > > aplicação, existindo a possibilidade de um módulo ser recarregado > > também várias vezes, caso o usuário queira, por exemplo, entrar no > > módulo de fornecedores, sair, ir para o módulo de clientes, sair e > > voltar para o módulo de fornecedores. > > > Problema: > > Os módulos funcionam perfeitamente na primeira vez em que são > > carregados, porém, na segunda vez que são carregados, alguns > > componentes, como o DataGrid, por exemplo, ao disparar o evento > > ListEvent, não passam a linha atual para a propriedade > > itemRenderer.data do evento. Já coloquei e tirei o SDK da RSL, já > > troquei a versão do SDK, troquei o ModuleLoader da tela principal por > > um ViewStack, mas nada de funcionar corretamente. Atualmente estou > > utilizando o SDK 3.4 (merged into code). Abaixo um trecho do meu > > componente NavigationContext, que dentre outras coisas, gerencia o > > carregamento dos módulos: > > > [code] > > package br.com.hordi.rechapps.view.utils{ > > > import br.com.hordi.rechapps.view.forms.LoadingProgressForm; > > > import mx.core.Application; > > import mx.events.ModuleEvent; > > import mx.modules.ModuleLoader; > > import mx.resources.ResourceManager; > > import flash.events.EventDispatcher; > > > [Resource("exceptions")] > > public class NavigationContext extends EventDispatcher{ > > > private static var instance:NavigationContext; > > [Bindable] private var moduleLoader:ModuleLoader; > > [Bindable] private var > > loadingProgressForm:LoadingProgressForm; > > > public function NavigationContext( > > enforcer:SingletonEnforcer ){ > > if( !enforcer ){ > > throw new > > Error( ResourceManager.getInstance().getString( "exceptions", > > "SingletonInstanceException" ) ); > > } else { > > loadingProgressForm = > > LoadingProgressForm.getInstance(); > > } > > } > > > public static function getInstance():NavigationContext{ > > if( instance == null ){ > > instance = new NavigationContext( new > > SingletonEnforcer() ); > > } > > return instance; > > } > > > public function browse( url:String ):void{ > > moduleLoader = new ModuleLoader(); > > moduleLoader.addEventListener(ModuleEvent.READY, > > function(event:ModuleEvent):void{ > > loadingProgressForm.hide(); > > for( var idx:Number = 0; idx < > > Application.application.modulesContainer.getChildren().length; idx++ ) > > { > > var unusedModule:ModuleLoader = > > Application.application.modulesContainer.getChildAt( idx ) as > > ModuleLoader; > > > Application.application.modulesContainer.removeChild( unusedModule ); > > unusedModule.unloadModule(); > > } > > > Application.application.modulesContainer.addChild( moduleLoader ); > > > Application.application.modulesContainer.selectedIndex = > > (Application.application.modulesContainer.getChildren().length-1); > > }); > > moduleLoader.addEventListener(ModuleEvent.PROGRESS, > > function(event:ModuleEvent):void{ > > loadingProgressForm.setProgress( > > Math.ceil((event.bytesLoaded / > > event.bytesTotal)*100), 100 ); > > loadingProgressForm.label = "Carregando > > módulo - " + > > Math.ceil((event.bytesLoaded / event.bytesTotal)*100) + "%"; > > loadingProgressForm.title = "Carregando..."; > > }); > > moduleLoader.loadModule( url ); > > loadingProgressForm.show(); > > } > > > } > > > } > > > class SingletonEnforcer{} > > [/code] > > > OBS: Deixei os listeners do moduleLoader inline mesmo, porque ainda > > estou tentando outras soluções para o problema. > > > Se alguém puder ajudar, agradeço bastante! > > > Um abraço! > > Diego Hordi > > > -- > > Você recebeu esta mensagem porque está inscrito na lista "flexdev" > > Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com > > Para sair da lista, envie um email em branco para > > flexdev-unsubscr...@googlegroups.com > > Mais opções estão disponíveis emhttp://groups.google.com/group/flexdev > > -- > *Hélio Antonio Fransico Silva* > Desenvolvedor web > Certificado Flash developer > Certificado Flash Design > Certificado web developer > Consultor Microsiga / Totvs > Desenvolvedor ADVPL / ASP > Analista de sistemas e ERP Sênior. -- Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com Mais opções estão disponíveis em http://groups.google.com/group/flexdev