




已阅读5页,还剩74页未读, 继续免费阅读
(计算机应用技术专业论文)cdma系统brew应用高效引擎的设计与研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
, j j 独创性( 或创新性) 声明 本人声明所呈交的论文是本人在导师指导下进行的研究工作及 取得的研究成果。尽我所知,除了文中特别加以标注和致谢中所罗列 的内容以外,论文中不包含其他人已经发表或撰写过的研究成果,也 不包含为获得北京邮电大学或其他教育机构的学位或证书而使用过 的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中 作了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名: 餮至 日期: 主反! 圣亟 关于论文使用授权的说明 学位论文作者完全了解北京邮电大学有关保留和使用学位论文 的规定,即:研究生在校攻读学位期间论文工作的知识产权单位属北 京邮电大学。学校有权保留并向国家有关部门或机构送交论文的复印 件和磁盘,允许学位论文被查阅和借阅;学校可以公布学位论文的全 部或部分内容,可以允许采用影印、缩印或其它复制手段保存、汇编 学位论文。( 保密的学位论文在解密后遵守此规定) 保密论文注释:本学位论文属于保密在一年解密后适用本授权 书。非保密论文注释:本学位论文不属于保密范围,适用本授权书。 本人签名: 该:萑 日期: 墨盘:;璺 导师签名: 一兽。,霉7 ; 日期: 耋鱼! 圣垦 尸、y 北京邮电大学硕士论文 c d m a 系统b r e w 应用高效引擎的设计与研究 摘要 通过b r e w 项目过程中不断的开发和维护我认识到,如果能有一 个通用的b r e w 应用引擎能够支撑大多数的b r e w 应用,那么我们就能 大大缩短开发和维护的时间而达到事半功倍的效果。正是基于这样的 考虑,我希望能够以自己开发的实际经验通过初步的设计和实现过程 中的不断完善来实现一个b r e w 应用的高效引擎。在此基础之上,逐 步解决现阶段存在的技术难题以达到对新平台的深刻理解。 因此本文通过对b r e w 平台的深度理解及开发过程中的优良设计 实现了一个b r e w 应用的高效引擎。要在一个平台上开发出一个具有 良好的可复用性和可扩展性的应用引擎,我们必须对这个平台了如指 掌,所以我认为在引擎的设计之前对b r e w 的一些核心机制的深入解 析是不可避免的。论文中着重介绍了b r e w 的接口机制及事件处理机 制等。引擎的开发主要将b r e w 应用分层,分模块开发。通过不同功 能模块的划分能够使程序的结构更清晰,分而治之的思想也能不断降 低问题的复杂度。有了基本的模块划分思想后,开发出来的模块也会 具有更强的可复用性。在核心模块的基础之上,依次构建了状态管理 模块、菜单模块、文件模块、声音模块、显示模块、中断处理模块、 调试模块、网络模块及针对市场新趋势的触摸屏模块,通过对这些模 块的优良设计,满足了大幅提高开发效率的需求。在此之后,本文介 绍了一些开发中的实际经验。 关键词gb r e w 模块可复用性可扩展性引擎 北京邮电大学硕士论文 k j - i 北京邮电大学硕士论文 am g h p e r f o r m l n c ee n g i n e sd e s i g na n dr e s e a r c h f o rb r e wa p p l i c a t i o no fc d m l as y s t e m a b s t r a c t d u et ot h ed e v e l o p m e n ta n dm a i n t e n a n c eo fm a n yb r e w a p p l i c a t i o n s ,ir e c o g n i z et h a ti tw o u l db eb e a e ri ft h e r ew a sae n g i n et o s u p p o r tm o s tb r e wa p p l i c a t i o n s w ec a ns h o r t e nt h ed e v e l o p m e n ta n d m a i n t e n a n c et i m eb yu s i n gt h i se n g i n e b a s e do ns u c hc o n s i d e r a t i o n s i h o p e ic a nd e s i g na n d d e v e l o pah i g h p e r f o r m a n c ee n g i n ef o rb r e w a p p l i c a t i o na c c o r d i n g t om yd e v e l o p m e n te x p e r i e n c e a f t e rt h a t ,w ec a n h a v eab e a e r u n d e r s t a n d i n ga b o u tt h en e wb r e wp l a t f o r mt h r o u g ht h e s o l u t i o no ft e c h n i c a ld i 伍c u l t i e s i nt h i sp a p e r , ii m p l e m e n tah i g h p e r f o r m a n c ee n g i n ef o rb r e w a p p l i c a t i o n sa c c o r d i n gt oad e e pu n d e r s t a n d i n ga b o u tb r e wp l a t f o r m a n d m a n yg o o dd e s i g np a t t e r n s w r em u s tk n o wap l a t f o r mv e r yw e l lt o d e v e l o pa na p p l i c a t i o ne n g i n ew i t hg o o dr e u s a b i l i t ya n ds c a l a b i l i t yo ni t s oii n t r o d u c et h ei m p o r t a n tc o r em e c h a n i s mo fb r e wi nt h eb e g i n n i n g i nt h e s em e c h a n i s m s ,t h eb i 也wi n t e r f a c em e c h a n i s ma n dt h ee v e n t h a n d l i n gm e c h a n i s ma r et h em o s ti m p o r t a n t t h ee n g i n ei sd e s i g n e db y s e v e r a ll a y e r sa n dd i v i d e di n t om a n ym o d u l e s c l a s s i f i e db yd i f f e r e n t f u n c t i o n a lm o d u l e sc a nm a k et h ep r o g r a ms t r u c t u r em o r ec l e a r l y a n di t w i l la l s or e d u c et h ec o m p l e x i t yo ft h ep r o b l e m m e a n w h i l e m o d u l e sc a n b eu s e db yd i f f e r e n ta p p l i c a t i o n sw i t h o u tc h a n g i n g o nt h eb a s i so ft h e c o r em o d u l e ,t h e r ea r es t a t em a n a g e m e n tm o d u l e ,m e n um o d u l e ,f i l e m o d u l e ,s o u n dm o d u l e ,d i s p l a ym o d u l e ,i n t e r r u p tp r o c e s s i n gm o d u l e , d e b u gm o d u l e ,n e t w o r km o d u l ea n dt o u c h s c r e e nm o d u l e id e s i g nt h e s e m o d u l e sc a r e f u l l yb y u s i n gg o o dd e s i g np a t t e r n st oi m p r o v ed e v e l o p m e n t e f f i c i e n c y f i n a l l y , ii n t r o d u c es o m eu s e f u ld e v e l o p m e n te x p e r i e n c e w h i c hw a ss u m m a r i z e di nm y d e v e l o p m e n tp r o c e s si nt h el a s tc h a p t e r k e yw o r d s :b r e wm o d u l e r e u s a b i l i t ys c a l a b i l i t ye n g i n e 北京邮电大学硕士论文 - 一 一 北京邮电大学硕士论文 目录 第一章绪论l 1 1 弓l 言1 1 2 论文背景介绍。l 1 3 本论文的内容组织1 第二章b r e w 平台基础3 2 1b r e w 系统简介3 2 2b r e w 开发环境介绍5 2 3c 还是c + + 7 第三章b r e w 核心机制解析9 3 1b r e w 的c 伽模型。9 3 2b r e w 的接口机制9 3 3b r e w 的事件处理机制1 0 3 3 1b r e w 的事件驱动模型1 1 3 3 2b r e w 事件处理1 2 3 3 3 积酬按键事件处理14 3 4b r e w 的回调机制1 5 3 5b r e w 的面向对象机制1 5 3 5 1b r e w 中的继承1 6 3 5 2b r e w 中的多态l8 3 6b r e w 的动态加载机制2 0 第四章b r e w 应用高效引擎的设计与实现2 4 4 1 软件的框架与构架2 4 4 2b r e w 应用引擎的必要性2 5 4 3 引擎的模块化2 5 4 4 核心模块2 6 4 5 状态管理模块2 9 4 6 资源管理模块3 3 4 6 1b r e w 中的内存。3 4 4 6 2 资源管理模块的双面性3 4 4 6 3 善用内存。3 5 4 7 菜单模块。3 6 4 7 1 菜单项、菜单页及菜单3 6 4 7 2 菜单模块接口3 8 4 8 文件模块3 9 4 8 1b r e w 文件系统4 0 4 8 2 资源文件的使用4 0 4 8 3 应用数据的持久存储4 0 4 9 触摸屏模块4 2 4 9 1b r e w 平台触摸屏事件4 2 4 9 2 虚拟键盘4 3 4 9 3 从虚拟键盘到虚拟按键4 4 北京邮电大学硕士论文 4 10 声音模块4 5 4 11 显示模块4 8 4 12 中断处理模块。4 9 4 1 3 调试模块5 l 4 14 网络模块。5 2 第五章b r e w 中的设计经验总结5 5 5 1 昧酬中的c + + 编程5 5 5 2b r e w 中的设计模式5 5 5 3b r e w 应用中的高亮处理5 7 5 4b r e w 应用中的短信事件处理6 0 5 5b r e w 应用中的字符串处理6 2 第六章结束语6 7 参考文献。6 8 致谢。6 9 攻读学位期间发表的学术论文目录7 0 轴 - k oi 北京邮电大学硕士论文 第一章绪论 1 1 引言 进入新世纪以来,中国终于在2 0 0 9 年迎来了移动互联网的第一个发展高潮 期。就在这一年千呼万唤始出来的我们正式跨入了3 g 时代。3 g 是“技术推动行 业升级”的典范,也是移动互联网能够实现的基础。正是得利于3 g 网络的高传 输速率,手机作为移动网络接入终端的设想才变为现实,整个移动通信产业的格 局也随之发生了巨大的改变。 1 2 论文背景介绍 在2 g 时代,手机制造商和网络运营商处于一个相对脱离的状态,这种状态 直接造成了移动互联网发展缓慢。进入3 g 时代,由于很多特色服务都需要借助 运营商的网络平台,因此运营商对产业链的主导能力日益增强,手机生产商和网 络运营商的融合趋势愈发明朗。 服务是移动互联网的核心内容之一。不论产业如何布局,产品如何升级,消 费者对移动互联网的最直接的体验都源自于服务。但是目前在国内市场,移动互 联还是一个新事物。相信随着行业的不断进步和更新,移动互联的发展轨迹也会 变得清晰且产业化。 随着新媒体的不断涌现,移动信息化的浪潮正以前所未有的迅猛之势席卷整 个华夏大地。移动互联网不断进入人们工作、生活的各个角落。手机游戏、移动 音乐、移动视频、移动支付和位置服务等丰富多彩的移动互联网应用迅猛发展, 正在逐步改变信息时代的社会生活。 据统计,2 0 0 9 年中国移动互联网用户已经超过2 亿,年增长率高达1l1 7 8 。 与此同时,移动互联网用户的应用需求也日趋增强,突出表现在手机网游、 手机阅读、手机博客等方面,用户的多样化需求引导了移动互联网应用服务的快 速发展。预计2 0 1 0 年移动互联网用户活跃度将有较大提升,用户对工具性( 如 移动搜索、手机浏览器) 、娱乐性( 如手机游戏、手机阅读) 的应用服务的使用 形成依赖,创意化、分众化应用服务将逐渐丰富。 1 3 本论文的内容组织 本论文的内容安排如下: 第一章绪论。主要介绍此论文基于当前发展形势的写作背景。 第二章b r e w 平台基础。简要的介绍了整个b r e w 系统平台的基础知识。 第三章b r e w 核心机制的解析。包括b r e w 的c o m 模型、接口机制、事 北京邮电大学硕士论文 件处理机制、回调机制、面向对象机制及动态加载机制等。通过对这些b r e w 平台最核心内容的理解和深入思考,给我们以后开发出一个高效的引擎打下了扎 实的基础。 第四章b r e w 应用高效引擎。通过在项目软件开发过程中提取出b r e w 应 用的共性部分形成了一个通用的b r e w 应用引擎。根据模块化的思想将引擎划 分为核心模块、状态管理模块、资源管理模块、菜单模块、文件模块、触摸屏模 块、声音模块、显示模块、中断处理模块、调试模块和网络模块等而后逐一分析 设计。设计在提高可复用性可扩展性的基础之上着重考虑时间( 运行速度) ,空 间( 内存空间及文件系统空间) 等因素以满足b r e w 应用的硬性需求。 第五章b r e w 中的设计经验。介绍了一些应用开发过程中不断累积的实际 经验 第六章结束语。 2 、 _ l i 北京邮电大学硕士论文 第二章b r e w 平台基础 2 1b r e w 系统简介 b r e w ( b i n a r yr u n t i r n ee n v i r o n m e n tf o rw i r e l e s s ) 是高通公司为无线数据应 用程序的开发和执行提供的通用内容,是一个专为无线设备设计的开放标准的瘦 应用环境。早在高通还在研制手机时就开始研发b r e w 技术,之后高通专门成 立了一个基于b r e w 研发的互联网服务公司。2 0 0 1 年1 月3 1 日,b r e w 平台 正式推出。 借助b r e w 平台,无线设备应用从此可以快速高效地开发,原本与无线市 场无缘的第三方开发商从此可以开始涉足无线应用这一广阔市场。高通公司免费 向手机制造厂商提供b r e w ,手机制造商将b r e w 集成在手机设备中。高通同 时也向开发人员免费提供b r e w 的s d k 。 在高通2 0 0 2 年6 月发表的b r e w 白皮书中写道:“伴随服务从语音向数据 应用不断发展,无线价值链愈加变得冗长而复杂。如果一条价值链无法为所有商 家带来切实可行的收入契机,它必将从中断开。仅仅借助应用开发商、网络运营 商、设备制造商以及其他厂商手中的利润,新式服务以及各种相关应用便可实现 快速增长。而b r e w 平台则可以保证每一个参与者都有机会提供价值、获得收 入,并且能够为其提供实现这一切的途径。 用一句话概括,b r e w 是基于无线网络、开放、完整、端到端的移动增值 业务解决方案,其构成如图所示【l 】。 图2 1b r e w 解决方案 无线终端设备市场从数量上讲比p c 电脑市场大的多。但是由于一直没有为 无线设备编写和集成应用程序的便利开发环境,这个市场始终将应用程序开发商 3 北京邮电大学硕士论文 拒之门外,结果导致了无线应用市场事实上的不存在。但是通过b r e w ,高通 提供了一个贯穿整个价值链各个环节的开放的端到端的解决方案,从而为应用开 发商敲开了进入这一广大市场的大门。这将导致消费者最终将拥有对他们无线设 备上应用程序的选择权和控制权。这也意味着消费者的需求将推动无线数据市场 前进,从而能使所有市场参与者获益。 对开发商来说,b r e w 的s d k 可以让应用开发人员在熟悉的环境( 使用基 于w i n d o w s 操作系统和c c + + 语言) 中工作,并使用b r e w 自带的模拟器进行 b r e w 应用的开发。开发商无需拥有手机就可编写可运行其上的应用程序。应 用程序编写完成之后,b r e w 提供了一个跨设备的通用运行环境,帮助开发商 进入庞大且不断增长的市场。b r e w 大幅度减少了为每种不同设备重复编写应 用程序的工作量。 对运营商来说,有了开发商的支持就可以向用户提供众多的无线数据应用、 内容和服务。除浏览器外,b r e w 还支持许多新的应用程序类型,它们结合了 本地与远程处理,可以提供更强大的全新功能、更卓越的性能,以及更优化的网 络资源使用。通过让用户无线下载并使用相应的b r e w 应用,b r e w 创造了一 个市场驱动的商业模式。由于主动下载应用程序的顾客更有可能使用该应用,从 而为运营商增加了用户使用时长,带来更多的收入。运营商需要提供独具特色的 b r e w 应用程序展开竞争以减少客户流失。 对广大用户来说,b r e w 为用户提供了像定制个人电脑那样的个性化服务。 每一个用户都可以自由选择他们需要的应用程序。由于市场的驱动,这些应用将 超越今天基于浏览器的应用程序,提供更实用、更震撼的内容、功能与服务。 b r e w 系统主要由b r e w 应用开发包,b r e w 分发系统和b r e w 应用执 行环境等部分组成。 b r e w 的应用开发包即s d k ( s o f e w a r ed e v e l o p m e n tk i 0 极大的简化了用c 、 c + + 和其他语言开发移动增值业务的难度,b r e w 的a p i 以接口类的方式组织, 每个类定义提供某一特定服务的一组接口。有些服务,如事件通知、菜单和对话 等图形用户界面和互联网连接是现代编程环境中标准配置。而一些接口类则显示 了无线环境中的独有特性,如地址簿、振铃和定位信息等。所以b r e w 的a p i 使应用开发商无需了解设备的内部机制也能轻松从事无线应用的开发。由于 b r e wa p i 可适用于所有安装了b r e w 执行环境的设备,因此编写的程序可以 轻松地从一个无线设备移植到另一个无线设备。虽然移植时由于手机大小性能等 不同可能需要对程序稍做调整,但只要在编写应用时留意增强应用的可移植性, 这种微调基本上都非常简单。 b r e w 的分发系统即b d s ( b r e wd i s t r i b u t e ds y s t e m ) 为运营商向消费者 4 k - 、 o l “ - “ 北京邮电大学硕士论文 销售b r e w 应用提供了方便途径。它使得终端用户可以利用手机或其它无线设 备通过移动网络来下载应用。开发商可以根据用户购买应用的数量和使用的情况 来收取相应的费用。为了保证b r e w 应用的安全性和合法性,开发商开发的应 用都必须通过相关严格测试才能正式上线。 b r e w 的应用执行环境即a e e ( a p p l i c a t i o ne x e c u t i o ne n v i r o n m e n t ) 是一个可 扩展的面向对象的应用程序开发和执行环境,它为开发者提供了一个使用c c + + 开发应用程序和共享模块的平台,同时它采用了类似w i n d o w s 等操作系统的事 件驱动程序运行方式。本质上它是一个软件接口层。对于b r e w 来说只要在新 终端设备移植a e e 即可,比起传统的必须将每个终端的所有应用逐一移植的工 作量简单了很多。 它们之间的关系如下图所示: 图2 2b r e w 系统各部分之间的关系 2 2b r e w 开发环境介绍 b r e w 是b i n a r yr u n t i m ee n v i r o n m e n tf o rw i r e l e s s ( 无线二进制运行时环境) 的缩写,从这几个单词中我们可以看到b r e w 的基本特性: b i n a r y 是指二进制,这表示它不同于j a v a 虚拟机的解释码而是可以直接在 二进制环境下执行的c p u 指令。b r e w 的a p i 是一组二进制的库和组件的集合。 因此b r e w 的应用程序是高效的,无须经过任何中间层的转换。 r u n t i m e 是指运行时,b r e w 下的应用程序是在运行时发现,并且根据需要 动态载入后运行的,这区别于传统的“大映像”模式的程序方法而类似于设备驱动 程序的动态载入。这不但代表提供了一个运行时的支持,同时也说明b r e w 采 5 北京邮电大学硕士论文 用了按需载入的方式,这样很大程度上的节约了无线通讯设备上有限的系统资 源。 e n v i r o n m e n t 是指环境,它是一个开放的针对无线通讯设备的客户服务器环 境。正因为有了这样的一个环境,才彻底改变了手持设备上应用程序单一的局面。 用户可以从b r e w 的应用服务器上随心所欲的选择和下载自己喜欢的应用。同 时也正是因为b r e w 提供的这一整套的解决方案,才造就了各种各样的b r e w 应用程序的良好生存环境。 w i r e l e s s 是指无线,这表示b r e w 是针对无线通讯设备而设计的。b r e w 主要应用在移动通信领域,它能支持高速上网、下载游戏、无线购物等几十种数 据业务。 瑚逻w 应用 b l 也wa e e 层 手机o e m 层 设备驱动芯片级功能 图2 3b r e w 设备系统架构 对于开发者来说,我们主要利用b r e ws d k 开发b r e w 设备系统架构最上 层的b r e w 应用。b r e ws d k 是b r e w 提供的一套能够适用于多种移动设备 的a p i 。它由一整套工具和服务组成,使开发者能够快速、高效、经济地开发能 够适用于各种手机的应用程序。从b r e w l x 到b r e w 3 x ,随着s d k 版本的不 断升级,b r e w 提供的功能越来越强大。 目前中国电信的b r e w 手机都是基于b r e w 3 1 5s p 0 1 的版本。b r e w 3 x 相对于b r e w 2 x 有了很大的变化。它重写了许多接口的内部实现。 在文件系统结构方面开始支持4 g b 以上的文件空间,支持m m c s d 等外存 卡的读写操作,并统一了图片,音乐,视频,主题,文字,声音,连接等文件路 径。b r e w2 x 设备上的文件系统中所有应用程序文件夹都存储在名为b r e w 的根文件夹中。应用程序文件( 包括s i g 文件) 存储在应用程序文件夹中( 不 允许存储在子文件夹中) 。m i f 文件存储在根文件夹b r e w 中。共享媒体( 如 图像和b a r 文件) 存储在b r e w s h a r e d 文件夹中。也可以将共享媒体存储在包 含主应用程序文件的文件夹中。例如: b r e w a p p n a m e a p p n a m e m o d 6 、- 一 k 一 i “ 寸 “ 北京邮电大学硕士论文 b r e w a p p n a m e a p p n a m e s i g b r e w a p p n a m e m i f b r e w s h a r e d m e d i a x x x ,其中x x x 是任何资源文件( 包括图形、视频、声音 和b a r 文件) 的扩展名。 而在b r e w3 x 设备上的文件系统结构如下:所有应用程序目录都存储在 b r e w m o d 文件夹中。应用程序文件( 包括s i g 文件) 存储在应用程序文件夹 中( 不允许存储在子文件夹中) 。m 文件存储在b r e w m i f 文件夹中。可以将 共享媒体( 如图像和b a r 文件) 存储在b r e w s h a r e d 文件夹中。也可以将共享 媒体存储在包含主应用程序文件的文件夹中【2 l 。例如: b r e w m o d a p p n a m e a p p n a m e m o d b r e w m o d a p p n a m e a p p n a m e s i g b r e w m i f a p p n a m e m i f b r e w s h a r e d m e d i a x x x ,其中x x x 是任何资源文件( 包括图形、视频、声音 和b a r 文件) 的扩展名。 在b r e w 3 x 中对m m c 、s d 和f l a s h 卡的访问方式与对文件的访问方式 完全相同,可以参考i f i l e m g r 和i f i l e 接口。并且支持热插拔。 另外非常值得注意的一点是b r e w 3 x 提供了对触摸屏功能的新的支持。在 当前手机发展趋势下我们应开发出一个触摸屏功能模块来满足大多数应用开发 的需求,这在以后的讨论中会详细介绍。 b r e w3 1 5 是目前正在使用的稳定的商业版本。然而鉴于移动通信领域目 前的发展趋势高通正在研发b r e w 4 x 版本。 2 3c 还是c + + c + + 是对c 的扩充。两种语言的基本语法和语义是相同的。c + + 不仅有与c 相同的底层控制能力( 和在c + + 程序中直接写汇编语言的能力) ,而且非正式的 证据表明,面向对象的c + + 程序的速度与用c 写的程序的速度相差在1 0 以内, 而且常常更接近。虽然c 效率比c + + 高,但是现代软件开发中不可忽视因素包 括软件开发的效率和软件维护的代价。 b r e w 的s d k 是以c 函数的方式提供的,考虑到移动设备资源的有限性, 并没有在s d k 之上提供一个类似于m f c 之类的应用框架。虽然开发人员可以 利用s d k 接口开发出丰富的应用程序,但是当应用规模变得越来越大,功能越 来越复杂时,利用纯粹的c 编程会显得复杂和繁琐。 b r e w 的应用中开发人员自定义的结构必须把a e e a p p l e t 结构作为第一个 结构成员。在b r e w 4 x 之前的版本中由于不支持静态变量和全局变量应用程序 只能将数据保存在应用的主数据结构中。b r e w 是基于事件驱动的,每个应用 都有一个事件处理函数。通常情况下,事件处理函数中都会包含一个庞大的 7 北京邮电大学硕士论文 s w i t c h 结构以处理各种不同情况下的不同事件。随着应用规模的增大这个s w i t c h 结构也会不断膨胀,这样程序的结构变得混乱且难以阅读。以上这些都是c 语 言开发的局限。 虽然对于这些局限,我们发现采用面向对象的c + + 语言可以克服。但出于对 效率的追求,且面向对象的思想方式我们使用c 语言也可以模拟实现,因此具 体实现过程中我选择了用c 语言实现。 8 嘶 、, d 北京邮电大学硕士论文 第三章b r e w 核心机制解析 虽然b r e w 的整体框架是基于接口体系,是面向对象的。但是和c h 却并 不相同,因为c a - + 的面向对象是语言编译器层次上的支持,而b r e w 的面向对 象实际上只是实现层次上的支持,b r e w 的框架是以纯c 实现面向对象的体 系。由于支持的层次不一样,所以仍然存在着很大的差异性。 3 1b r e w 的c o m 模型 c o m 是c o m p o n e n to b j e c tm o d a l ( 组建对象模型) 的缩写。c o m 是开发软 件组件的一种方法。组件实际上是一些小的二进制可执行程序,它们可以给应用 程序,操作系统以及其他组件提供服务。开发自定义的c o m 组件就如同开发动 态的,面向对象的a p i 。c o m 并不是一个大的a p i ,它实际上象结构化编程及 面向对象编程方法那样,它是一种编程方法。在任何操作系统中,开发人员均可 以遵循“c o m 方法”。 目前在w i n d o w s 平台的底层,许多功能都是通过c o m 机制来实现的。c o m 通过统一的、独立的接口定义语言( i d l :i n t e f f a s ed e f i n i t i o nl a n g u a g e ) 来定义 统一的接口,并规定了相应的接i :l - - 进制规范,这样就可以按照这个二进制规范, 通过各种不同的开发语言来实现c o m 程序的开发,而实现接口与实现之间完全 分离的技术就是虚拟函数表( b l ) 。 b r e w 基本上是遵循c o m 这一组件构架的【3 1 。因此它能够随时间的推进而 不断演变发展,而且可以对原有的应用更方便和灵活地进行升级。b r e w 中所 提供的服务实际上是一些小的二进制可执行程序形成的组件,它们可以给应用程 序、操作系统以及其它组件提供服务。开发自定义的b r e w 组件与开发动态的、 面向对象的a p i 类似。多个b r e w 对象可以连接起来形成应用程序或组件系统。 而且组件可以在运行时在不被重新链接或编译应用程序的情况下替换。 我们知道,c o m 的对象之间是通过接口来进行交互的。c o m 中的一个组件 ( 类) 继承至多个接口。客户只能通过接口间接地得到组件的服务。并且,通过 不同的接口可以得到不同的服务。组件仅仅通过接口对外暴露服务。下面我们来 看看b r e w 中的接口机制。 3 2b r e w 的接口机制 接口是包含了一组函数的数据结构,接口定义了一组成员函数,这组函数是 组件对象暴露给用户的所有可用信息,客户只能通过这些信息取得组件提供的服 务。与c o m 使用g u i d 作为接口的唯一标识类似,b r e w 使用c l a s s i d 来作为 接口的唯一标识,它实际上是一个4 字节的无符号整数。 c o m 中引入了引用计数的概念,这是为了解决组件实例被多个客户同时使 9 北京邮电大学硕士论文 用的问题。c o m 中的组件以动态连接库的形式存在,所以只会被加载一次,也 即只会存在组件的同一实例。那么当多个客户同时使用时,何时真正释放实例( 从 内存中卸载) 呢? 如果按照传统的方式由客户决定释放,比如d e l e t e ,那么问题 肯定是存在的,因为用户之间的信息是相互屏蔽的,用户a 不会知道用户b 正 在使用,那么用户a 释放组件就会造成对用户b 的影响。 所以只能由组件自身来决定何时释放自己。计数机制就应运而生。每个客户 使用组件时引用计数加1 ,释放组件时引用计数减1 ,当引用计数减到0 时,表 示当前没有任何客户使用该组件,那么组件自身进行释放。 与c o m 类似,b r e w 使用基于接口对象的引用计数来控制接口的生存期, 并且为多个程序之间共享同一接口对象提供了有效的控制手段。b r e w 提供接 口的好处是只要保持应用程序和组件程序之间的接口不变,应用程序就不需要改 变。b r e w 中的引用计数是针对每个接口的。应用程序用一个指向接口数据结 构的指针来调用接口成员函数,而这个接口指针实际上也是指向一个指针,这个 指针则指向了接口函数表或虚函数表的定义。每一个接口成员函数的第一个参数 必须为指向定义这个接口组件类型的指针,这是因为接口本身不能够独立存在, 它必须依附于某个c o m 组件而存在。因此这个指针可以提供对象实例的属性信 息,在调用过程中可以知道是在对哪个c o m 对象进行操作。 需要注意的是,b r e w 中大部分接口是多实例的,所以b r e w 中的引用计 数是针对“同一接口实例 的。它是同一接口实例在多个客户间使用的解决方案。 不同的接口实例间的引用计数之间没有任何关系。 b r e w 中的引用计数的使用规则和c o m 基本类似。需注意如果是通过出口 参数获得接口实例的,引用计数已经被加1 ,使用完毕后,用户需要显式的进行 r e l e a s e ,而如果是通过返回值获得接口实例的,引用计数并不加1 ,用户使用完 毕后不需要r e l e a s e 。通过入口参数输入接口实例时,接收方必须对输入的接口 实例负责,即进行a d d r c f , 以防止外部的r e l e a s e 造成的影响,所以在客户输 入实例后任何不需要的时候都可以释放。 c + + 中同一个类的所有对象拥有不同的数据成员存储区,但是这些对象共享 同一份成员函数的拷贝,当不同的对象调用成员函数的时候会根据对象的t h i s 指针判别哪个对象调用了成员函数。对于b r e w 接口也类似,对于指向虚函数 表的指针,每个接口指针都有属于自己的一份拷贝,而对于提供实现的虚函数表 则共享同一份拷贝。 3 3b r e w 的事件处理机制 事件处理问题是现代程序设计的核心问题。在我们所开发的b r e w 应用程 序中,最基本的内容就是事件驱动和处理的机制。正是通过这样的机制,我们才 能使用相对简单的思路开发出我们所需要的应用程序。通过基于事件驱动机制开 1 0 北京邮电大学硕士论文 发,我们可以把复杂的程序简单的分割成相对的小模块程序,同时针对事件驱动 机制的特点我们还可以实现一个状态机的结构,这样的程序框架对于开发大型的 应用程序来说是十分的方便的。 b r e w 中的事件是一系列以e v t 开头的宏定义。开发过程中主要用到两种 事件:a p p l e t 事件和按键事件。 a p p l e t 事件中我们主要关注以下事件: e v t a p p _ s t a r t e v t a p p - s t o p e v t a p p - s u s p e n d e v t a p p r e s u m e 按键事件主要包括下列事件: 。e k e y e v t k e y p r e s s e v t k e y r e l e a s e e v t k e y c h a r 对于一个b r e w 应用程序来说,不管是否会处理这个事件,都将收到来自 系统或使用者的事件,并且将这些事件传递到应用程序中的控件或者相应接口当 中。b r e w 通过应用程序事先注册事件处理函数h a n d l e e v e n t 函数将事件传递给 应用程序的相应模块,相应模块处理这些事件并且通过函数的返回值告知系统这 个事件的处理情况。 3 3 1b r e w 的事件驱动模型 b r e w 应用程序的模型是基于一个事件驱动的协作式多任务模型,由于 b r e w 自身的这一特点,限制了b r e w 只能支持单线程基于事件驱动的应用程 序。因此b r e w 程序实际上可以看作是一个事件队列,所有的事件都存储在该 队列中,新产生的事件也都会被加入到队列之中,程序依次处理队列中还存在未 处理的事件。如果队列中的事件在分发后处理完毕或者无人处理,该事件都将被 从事件队列中删除。这里的事件不仅仅指我们的应用程序当中h a n d l e e v e n t 处理 的事件,h a n d l e e v e n t 所给出的只是一部分可以由开发人员决定处理方式的事件, 而还有一部分事件是由b r e w 系统层处理,例如应用程序中注册的回调函数的 调用以及定时器的激发回调等。这样理解就可以把所有的b r e w 行为统一起来 归入队列中。在这个队列中一个过程并不能抢占另一个过程的执行权,也就是说 如果正在处理某个事件,不用担心会有其他事件处理中断了当前的执行过程。因 此在这样的过程当中不存在多线程争抢资源的问题。 一般情况下,b r e w 应用程序中绘制屏幕的事件是由i d i s p l a y 函update 数来驱动的。即当我们调用了i d i s p l a yb i t b l t 函数后,如果不调用 北京邮电大学硕士论文 d i s p l a y函数,实际上所要绘制的图像是不会在屏幕上更新的。因此 通常情况下u ,p 我d a 们t e 所绘制的图像都不会立即出现在屏幕上,一般我们的处理过程 是多次调用i d i s p l a yb i t b l t 函数,然后统一调用一个i d i s p l a yu p d a t e ,此 时才会产生屏幕绘制事件。 从上面的描述中我们可以得出结论,要想使各个事件尽可能及时得到处理, 就应该在处理每个事件的时候尽可能减少处理时间,如果长期陷入某个事件的处 理当中程序无响应,看上去就会像死机一样,例如在网络传输过程中如果长时间 的等待传输结果而无响应,用户就会有手机死机的感觉而不知所措。所以如果我 们无法在一次调用事件处理器内完成就采用回调机制,以便在操作完成之后通知 该应用。 3 3 2b r e w 事件处理 不同于大多数的操作系统,b r e w 的应用程序不能采用轮询的方式来查看是 否有事件传递过来,b r e w 系统将会根据相关的事件主动调用应用程序的 h a n d l e e v e n t 函数将事件传递给我们的应用程序。不像其它一些大型的操作系统 平台,如w i n d o w sc e 和其他的嵌入式系统操作系统,b r e w 运行在一个单线程 的环境。从此我们可以看出我们的应用程序在捕获一个事件的时候,必须进行尽 可能简单的处理。我们必须尽可能快地处理每一个事件,这样才不至于影响系统 的正常运行。否则,应用程序的表象可能就会是手机
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度新能源车辆货运运输服务协议
- 2025年度房地产项目开发承包合同
- 2025版清单检查项在电力行业的设备巡检与维护合同
- 2025年度家居用品全国铺货合作协议规范模板
- 2025版绿色环保墙体租赁及推广应用合同
- 2025版上海电信光纤网络升级改造合同
- 2025年特色小镇土地及房屋买卖转让协议
- 2025版教育培训机构试用期员工劳动合同模板
- 2025年度城市地下综合管廊土石方工程居间服务合同
- 2025年医疗器械代理注册与产品注册推广合同
- 世界范围内社区支持农业CSA(下)
- 急性缺血性脑卒中溶栓治疗
- NB∕T 10209-2019 风电场工程道路设计规范
- GB/T 4668-1995机织物密度的测定
- GB/T 17107-1997锻件用结构钢牌号和力学性能
- 《无人机组装与调试》课件 第一章
- 校园文化施工组织设计范本
- 轨行区作业安全专项方案
- 大地的耳朵-阅读答案
- 2021年内江市工会系统招聘笔试试题及答案解析
- 云南省食品经营许可申请表
评论
0/150
提交评论