1

我有一个复杂的应用程序。我对我的所有库都使用 Flex 4.1 RSL 和自定义 RSL(并且有大约 15 个自定义 SWC - Flex 库项目)

我想用最少的 RSL 加载主应用程序,然后在用户与应用程序的第一部分交互时在后台加载所有其他 RSL 的 Flex 模块。

主应用程序需要 3 个 SWC,模块需要其余的 (12)。

如果我有一个带有 Application.mxml 的 Flash Builder 应用程序项目,其中我链接了所有 RSL(作为 RSL)和 Module.mxml

我该如何解决这个问题,以便将 RSL 与模块一起加载到子应用程序域中?

目前我正在使用:

info = ModuleManager.getModule(URL);
info.load(new ApplicationDomain(ApplicationDomain.currentDomain));

...所以它应该加载到新的应用程序域中,但 RSL 已经预加载到父域中!.

我在我的模块中使用静态字段/单例,所以我无法加载更多。

如果我可以将带有 RSL 的模块加载到子应用程序域中,类定义就会分开,我可以使用两个模块,每个模块都有自己的静态字段。

4

2 回答 2

1

Flex 4.5 附带解决方案——RSL 简介

使用占位符 RSL

当您使用 Flex 编译应用程序时,默认行为是针对框架(或默认)RSL 编译应用程序。当应用程序运行时,它只加载它实际使用的框架 RSL,并为剩余的框架 RSL 创建占位符。当应用程序加载需要有占位符的框架 RSL 之一的模块或子应用程序时,模块或子应用程序然后将该 RSL 加载到主应用程序中。

请参阅Adob​​e Flex 4.5 - RSL 简介 @ help.adobe.com

于 2011-05-10T14:50:14.523 回答
1

为什么不试试受 OSGI 启发的Potomac模块化框架呢?它使您可以更精确地控制资产的加载。它可能涉及一些重构,但您的应用程序中有 15 种不同的编译资产这一事实表明您已经在考虑模块化路线。

编辑:

我应该指出,Potomac 会将所有“捆绑包”加载到应用程序域中,但它确实解决了您按需加载资产的问题。我不确定您问题的哪一部分是最重要的问题。您还可以查看子应用程序,它可能符合您的要求,也可能不符合您的要求。

于 2011-05-10T12:43:25.700 回答