Preloading Modules with ModuleManager

In addition to ModuleLoader, which is a high-level module API, Flex offers ModuleManager. The prime benefit of using ModuleManager is that you can separate the transfer of the module byte code over the network, which is potentially a lengthy operation, from the actual creation of the module instance(s). Certainly, you could do it yourself with the URLLoader (as illustrated in Example 7-1), but you should take advantage of the nice abstraction layer provided by the ModuleManager class. In particular, the contract of the ModuleManager guarantees that you won’t transfer the module bytes over the network more than once.

To load a module into a singleton registry of modules provided by ModuleManager, you use a module proxy, such as an implementation of the IModuleInfo interface, corresponding to the module URL. You then perform the load() via this module proxy, as shown in Example 7-7. The actual loading task will be delegated to flash.display.Loader.

Example 7-7. Module preloading technique

private var moduleInfoRef:Object = {}; private function loadModule(moduleUrl:String):void { var moduleInfo:IModuleInfo = ModuleManager.getModule(moduleUrl); moduleInfo.addEventListener(ModuleEvent.READY, onModuleReady ) ; //You need to protect moduleInfo from being garbage-collected moduleInfoRef[moduleUrl] = moduleInfo; moduleInfo.load(); } // Module is loaded. You may create modules via event.module.factory private function onModuleReady(event:ModuleEvent):void ...

Get Agile Enterprise Application Development with Flex now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.