我有个复杂的申请。我为我的所有库使用了Flex 4.1 RSLs和自定义RSLs (还有15个自定义SWCs库项目)
我想用最少的RSLs加载主应用程序,然后在用户与应用程序的第一部分交互时,用所有其他的RSLs加载Flex模块。
主应用程序需要3个SWC,模块需要其余的(12)。
如果我有一个带有Application.mxml的FlashBuilderApllation项目,其中我有所有的Module.mxml链接(作为RSL)和Module.mxml
如何解决这个问题,以便将模块加载到子应用程序域中?
目前我正在使用:
info = ModuleManager.getModule(URL);
info.load(new ApplicationDomain(ApplicationDomain.currentDomain));..。所以它应该加载到新的应用程序域,,但是RSLs已经预加载到父域了!。
我在模块中使用静态字段/单例,因此不能加载更多的字段。
如果我可以用它的RSLs将模块加载到子应用程序域中,那么类定义就会分开,我可以使用两个模块,每个模块都有自己的静态字段。
发布于 2011-05-10 14:50:14
解决方案随Flex 4.5而来-- RSLs简介
使用占位符的 使用Flex编译应用程序时,默认行为是根据框架(或默认)RSL编译应用程序。当应用程序运行时,它只加载它实际使用的框架RSL,并为其余的框架RSL创建占位符。当应用程序加载需要有占位符的框架RSL之一的模块或子应用程序时,模块或子应用程序然后将该RSL加载到主应用程序中。
请参阅Adobe 4.5 - RSLs @ help.adobe.com简介
发布于 2011-05-10 12:43:25
为什么不试试OSGI启发的波托马克模块化框架呢?它允许您更准确地控制资产的加载。这可能涉及到一些重构,但是应用程序中有15种不同的编译资产这一事实表明,您已经在按照模块化的思路思考。
编辑:
我应该指出,Potomac将将所有“bundle”加载到应用程序域中,但它确实解决了按需加载资产的问题。我不知道你问题的哪一部分是最重要的。您还可以查看子应用程序,它可能适合您的需求,也可能不适合您的需求。
https://stackoverflow.com/questions/5594286
复制相似问题