uiOne是一种数据驱动的用户界面技术,是建立在BREW和BUIW之上的。TrigPlayer将TrigML的逻辑表述文件解释并映射BUIW中的控件并显示出来,并通过Actor来访问AEE层提供的各种服务,uiOne在手机上的层次关系如图10-6所示。
<!--[if mso & !supportInlineShapes & supportFields]><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:459pt;height:280.6pt'> <v:imagedata croptop="-65520f" cropbottom="65520f" /> </v:shape><span style='mso-element:field-end'></span><![endif]-->
<!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:10.5pt'><span style='mso-element:field-begin'></span><span style='mso-spacerun:yes'> </span>TOC \h \z \c "</span></b><b style='mso-bidi-font-weight:normal'><span lang=ZH-CN style='mso-bidi-font-size:10.5pt;font-family:黑体;mso-ascii-font-family: Arial'>图</span></b><b style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:10.5pt'>" <span style='mso-element:field-separator'></span></span></b><![endif]-->图 10-6:uiOne在手机上的层次关系 <!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:10.5pt'><span style='mso-element:field-end'></span></span></b><![endif]-->
Trig是一个或一组应用中编译好的TrigML和其他资源的混合体,Triglet是一个Trig中的可更新部分。Trig是通过TrigPlayer执行的,TrigPlayer是uiOne的应用引擎,相当于一个解释器。Actor是由C代码实现的插件,通过Actor来调用手机上BREW AEE层API,因此可以理解成应用的扩展引擎。TrigBuilder是一个开发工具来编写TrigML,运行和调试手机的待机界面应用。
Trig 实际上就是用户界面,包括运营商定制的用户界面和内容更新频道的界面。Trigs包含了本地资源的显示组合,如图10-7所示,例如编译过的TrigML文件,图像文件,文本文件等。TrigML中的资源是按树状结构组织的,每一个资源都是唯一的一个叶子节点。
<!--[if mso & !supportInlineShapes & supportFields]><v:shape id="_x0000_i1026" type="#_x0000_t75" style='width:5in;height:221.75pt'> <v:imagedata croptop="-65520f" cropbottom="65520f" /> </v:shape><span style='mso-element:field-end'></span><![endif]-->
<!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:10.5pt'><span style='mso-element:field-begin'></span><span style='mso-spacerun:yes'> </span>TOC \h \z \c "</span></b><b style='mso-bidi-font-weight:normal'><span lang=ZH-CN style='mso-bidi-font-size:10.5pt;font-family:黑体;mso-ascii-font-family: Arial'>图</span></b><b style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:10.5pt'>" <span style='mso-element:field-separator'></span></span></b><![endif]-->图 10-7:Trigs是包含本地资源的显示组合 <!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:10.5pt'><span style='mso-element:field-end'></span></span></b><![endif]-->
Actors 提供了使用底层代码的接口,通过Actor可以访问手机平台的特性和手机上的应用,能够使用底层代码的应用逻辑。本质上也是一个BREW 应用扩展, 类似于中间件, 负责和底层的BREW API 以及其他扩展应用进行接口交互, 是uiOne 应用的底层逻辑处理部分。Actor提供了3种功能:改变应用中的数据结构和变量的值,处理Trig发送给Actor的命令消息,将变化的信息通过事件发给Trig。
Triglet是Trigs中可更新的部分(图10-8),通过OTA的方式下载到手机上,可以实现手机待机界面上指定内容的自动更新。在形式上表现为一系列资源文件的目录体系, 是对uiOne 应用的动态可更新部分的描述, 是一个资源文件包, 可无线下载, 负责UI的在线更新, 并可只对部分UI 进行更新。
<!--[if mso & !supportInlineShapes & supportFields]><v:shape id="_x0000_i1027" type="#_x0000_t75" style='width:351pt;height:246.95pt'> <v:imagedata croptop="-65520f" cropbottom="65520f" /> </v:shape><span style='mso-element:field-end'></span><![endif]-->
<!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:10.5pt'><span style='mso-element:field-begin'></span><span style='mso-spacerun:yes'> </span>TOC \h \z \c "</span></b><b style='mso-bidi-font-weight:normal'><span lang=ZH-CN style='mso-bidi-font-size:10.5pt;font-family:黑体;mso-ascii-font-family: Arial'>图</span></b><b style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:10.5pt'>" <span style='mso-element:field-separator'></span></span></b><![endif]-->图 10-8:Triglet的内容更新示意 <!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:10.5pt'><span style='mso-element:field-end'></span></span></b><![endif]-->
频道升级实际上是一种准PUSH服务,由用户选择了自己喜欢的内容频道和更新周期。客户定制服务器会发送SMS到终端用户,用户手机上的更新管理器会根据内容频道的URL到内容服务器获取相关内容(Triglet),然后由资源管理器将定制的频道内容呈现给用户,系统结构如图10-9所示。
<!--[if mso & !supportInlineShapes & supportFields]><v:shape id="_x0000_i1028" type="#_x0000_t75" style='width:378pt;height:253.15pt'> <v:imagedata croptop="-65520f" cropbottom="65520f" /> </v:shape><span style='mso-element:field-end'></span><![endif]-->
<!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:10.5pt'><span style='mso-element:field-begin'></span><span style='mso-spacerun:yes'> </span>TOC \h \z \c "</span></b><b style='mso-bidi-font-weight:normal'><span lang=ZH-CN style='mso-bidi-font-size:10.5pt;font-family:黑体;mso-ascii-font-family: Arial'>图</span></b><b style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:10.5pt'>" <span style='mso-element:field-separator'></span></span></b><![endif]-->图 10-9:uiOne中频道内容更新的体系结构 <!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span style='mso-bidi-font-size:10.5pt'><span style='mso-element:field-end'></span></span></b><![endif]-->
另外,一个典型基于 uiOne 的应用组织结构如图 10-10 所示,可见,一个典型的 uiOne 应用一般由 Template , trig , triglet , themes 以及相关的基础库组成。