經過調試跟蹤上述的HelloBREW 工程,得出圖四所示的BREW的 Module和Applet的執行序列。程序員
AEEModGen、AEEAppGen和HelloBREW 一塊兒被編譯並鏈接爲 HelloBREW.dll。如1.2節所述,BREW 剛啓動時並非加載全部的 Module,只有在 Module 所包含的 Applet 或 Extension 須要被加載時,BREW才加載該Module。因此,當用戶點擊執行HelloBREW 這個 Applet 時,BREW 經過調用 AEEMod_Load() 首先來加載這個 Module [序列1];AEEModGen 經過 AEEStaticMod_New() 完成 IModule 建立和初始化的工做以後,Module的加載過程完成[序列2&3]。ide
Module被加載完成以後,BREW就經過 IMODULE_CreateInstance() 來建立Applet,AEEModGen經過HelloBREW的AEEClsCreateInstance(),把Applet的具體建立工做交給HelloBREW [序列4, 5 & 6];而AEEAppGen經過AEEApplet_New() 提供了IApplet建立和初始化的便利,HelloBREW經過在AEEClsCreateInstance()中調用此函數,把具體的事件處理函數HelloBREW_HandleEvent() 和程序退出時的清理函數註冊到BREW裏。當完成上述工做並返回AEE_SUCCESS以後, Applet的建立也就完成了 [序列 4~8]。函數
若是Applet是由於要運行而被建立併成功建立以後,會立刻收到一條EVT_APP_START的事件,此時你的Applet已經正常的加載運行了,並經過HandleEvent函數來處理它所收到的各類事件。spa
再把上述過程總結一下,AEEAppGen和AEEModGen其實並非獨立的實體對象,只是因爲它們是BREW SDK提供的,爲了明確展示開發BREW Applet時,程序員本身所要作的工做的須要,才把它們單獨列出來。要看程序員所須要作的工做,只須要從圖四中HelloBREW的生命線(豎線)看過去,也就是隻要實現AEEClsCreateInstance(),另外,HelloBREW調用AEEApplet_New() 時,把註冊本身實現的事件處理函數和程序退出時的清理函數,而退出時的清理函數也能夠不定義,因此最後,程序員所要實現的函數只有AEEClsCreateInstance()和事件處理函數。調試