2011-04-08 131 views
1

我有一個複雜的應用程序。我使用Flex 4.1 RSL和我的所有庫的定製RSL(並且有15個定製SWC-Flex庫項目)Howto:具有自己的自定義RSL的Flex模塊只加載到子ApplicationDomain中?

我想用最少的RSL加載主應用程序,然後將Flex模塊加載到所有其他RSL在用戶與應用程序的第一部分進行交互的背景中。

主應用程序需要3個SWCs,模塊需要其餘部分(12)。

如果我有一個Application.mxml Flash Builder中Apllication項目中,我已經全部鏈接的RSL(如的RSL)和Module.mxml

如何解決這個問題,所以的RSL加載模塊爲孩子申請域?

目前我使用:

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

...所以應該載入到新的應用領域,不過的RSL預加載到父域了!

我在我的模塊中使用靜態字段/單例,所以我不能加載更多的。

如果我可以將帶有RSL的模塊加載到子應用程序域中,則類定義將分開,我可以使用兩個模塊,每個模塊都有其自己的靜態字段。

回答

1

解決方案來使用Flex 4.5 - 介紹的RSL

使用佔位符的RSL

當你與 的Flex編譯應用程序時,默認行爲是 編譯反對 應用框架(或默認)RSL。當 應用程序運行時,它僅加載它實際使用的框架RSL ,併爲其餘的框架RSL創建佔位符 。當 應用程序加載的模塊或 子應用程序要求的 一個爲其中的框架的RSL有 一個佔位符,模塊或 子應用程序然後載入RSL 到主應用程序。

看到Adobe Flex 4.5 - Introduction to RSLs @ help.adobe.com

+0

如果這是您的問題的解決方案,那麼接受它作爲正確答案。 – 2011-05-10 19:50:24

1

爲什麼不嘗試OSGI靈感Potomac模塊化框架?它使您能夠更精確地控制資產負載。它可能涉及一些重構,但事實上,在應用程序中有15個不同的編譯資源,這表明您已經在考慮模塊化的線。

編輯:

我要指出的是波托馬克將加載所有的「捆綁」到應用程序域,但它確實解決您的按需加載你的資產的問題。我不確定問題的哪一部分是最重要的問題。您也可以查看sub-applications,這可能會或可能不符合您的要求。

+0

謝謝,這看起來非常有用。不過現在看來,我們需要擺脫Flex的重載,所以我不會在這個項目中使用它。使用Flex 4.5來移除未使用的RSL並將它們與模塊一起加載到它們的子域中請參閱[在模塊和子應用程序中使用RSL](http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf674ba-7fff.html# WS19f279b149e7481c-152c7c012d9aabe32a-7fff)和[Customize project builds](http://help.adobe.com/en_US/flashbuilder/using/WSe4e4b720da9dedb524b8220812e5611f28f-7fe1.html) – 2011-05-10 14:46:05

相關問題