经过调试跟踪上述的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()和事件处理函数。调试