欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    Symbian实践培训讲义.ppt

    • 资源ID:6521546       资源大小:6.65MB        全文页数:529页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Symbian实践培训讲义.ppt

    1,Symbian OS/C+移动应用开发讲义,何 锐 张锦锋牛建伟N北京航空航天大学计算机学院分布与移动计算实验室,北航分布与移动计算实验室,2,主要内容,Symbian OS 概述(1上)Symbian SDK及其开发环境(1上)Symbian软件开发概述(1上)内存管理(1下)Descriptors(2上)动态数组(2上)活动对象(2下),北航分布与移动计算实验室,3,主要内容(续),简单GUI编程(3上)资源的使用(3上)对话框(3下)视图及控件(3下)中文化(4上)多视图(4上)文件及流操作(4下)MMF入门(5上)总结与考试(5下),北航分布与移动计算实验室,4,Symbian OS 概述,北航分布与移动计算实验室,5,内容,Symbian OS演变历史关键特点其它相关操作系统特点基础概念组件结构,北航分布与移动计算实验室,6,Symbian OS,北航分布与移动计算实验室,7,Symbian OS,针对PDA及智能手机的,能够提供良好的软实时的操作系统与之竞争的有Windows Mobile、PalmOS以及Linux,BrewSymbian OS针对如下特点进行了优化低功耗(电池供电)小型设备长久运行、关键应用Symbian OS解决的问题嵌入式软件移动计算电话其他基于ROM的应用程序,北航分布与移动计算实验室,8,关键特点,主要特点:基于ROM针对电池供电健壮性好抢先式多任务微内核基于组件完全面向对象因此:可靠性好不会丢失用户数据,北航分布与移动计算实验室,9,通用技术,北航分布与移动计算实验室,10,当前的产品(S60平台),Nokia N-Gage,Nokia 6600,Nokia 6630,Nokia 6670,Siemens Sx1,Panasonic X700,Nokia 7650,Nokia 7610,北航分布与移动计算实验室,11,当前的产品(S80和S90),Nokia 92xx communicators,Nokia 9500/9300 communicators,Nokia 7700,Nokia 7710,北航分布与移动计算实验室,12,当前的产品(UIQ),Motolora A1000,P908,P910,北航分布与移动计算实验室,13,北航分布与移动计算实验室,14,竞争者,平台PalmWindows MobileRIM(BlackBerry)Linux移动技术MIDP(J2ME)WAPLinuxSim Toolkit.NET(C#),北航分布与移动计算实验室,15,Windows Mobile,最初是为比较大的设备设计的操作系统优点:配置高,功能强缺点:耗电大,硬件成本高针对不同的设备族Pocket PCSmart Phone封闭的环境MS提倡私有开发标准很多的开发人员易于使用用户界面友好,北航分布与移动计算实验室,16,PalmOS,比SymbianOS还要普及一些尤其是美国市场表现在退步(Pocket PC)目前PalmOS销量不好16/32位操作系统第三方软件多较多的开发人员,北航分布与移动计算实验室,17,Linux,Linux在C/S模式下表现很好为Intel架构的个人电脑设计性能和健壮性优于Windows在服务器端有良好表现比Symbian OS更开放很容易定制可以直接得到RTOS Linux大量专家级的开发者免费使用,北航分布与移动计算实验室,18,GEOS,GEOS是Nokia等公司内部使用的一个中低端手机操作系统,目前没有被广泛使用Nokia准备从GEOS过渡到Symbian平台,北航分布与移动计算实验室,19,Symbian OS发展历史,1984 第一个版本Psion Organizer II8位OS支持汇编语言和OPL(Organizer Programming Language)1991 Psion Series 316位Organizer(SIBO)OS内核为EPOC应用程序和引擎分离X86销售了1.5M SIBO机器,北航分布与移动计算实验室,20,Symbian OS发展历史(续),1994发展称为32位可移植的操作系统1996 成立了“Psion软件”公司1997 第一个发布了Symbian OS版本1998 Symbian公司成立:Ericsson,Motorola,Nokia,Psion1999 Panasonic公司成为股东销售2M Symbian平台设备,北航分布与移动计算实验室,21,Symbian OS发展历史(续),2000 Symbian OS授权Sony和Sanyo发布了世界上第一款Symbian智能手机,Ericsson R3802001许可证授权Siemens和Fujitsu发布Nokia 92xx第一款Series 60 手机 7650Symbian OS v6.1,北航分布与移动计算实验室,22,Symbian OS发展历史(续),2002Siemens和Sony Ericsson变为新股东许可证授权SamsungSymbian OS v7.0发布Sony Ericsson发布P8002003Symbian OS v7.0s发布Series 90,UIQ设备P908发布Samsung变为股东2003前3季度销售 4M Symbian手机,北航分布与移动计算实验室,23,Symbian OS发展历史(续),2004发展势头迅猛,前景看好Nokia 9500发布LG和 Arima获得许可证Nokia购买了Psion 的股权Symbian OS v8.0发布多个新新设备发布MotorolaPanasonic,北航分布与移动计算实验室,24,Symbian OS授权使用者,北航分布与移动计算实验室,25,Symbian OS股份分配,北航分布与移动计算实验室,26,基础概念,线程一个线程是执行的单元。同一个进程的线程共享地址空间。调度器(schceduler)负责对线程(而不是进程)进行调度进程内存保护的单元。一个进程不能访问其他进程的内存空间。一个进程有一个或多个线程抢先式多任务线程根据它们的优先级进行调度。优先级高的线程能够抢先优先级低的线程的CPU资源,北航分布与移动计算实验室,27,内存地址空间分配图,北航分布与移动计算实验室,28,基础概念,上下文切换当调度器在不同的线程之间进行切换时,就需要进行上下文切换。将导致内存表、寄存器内容改变根据线程是否属于同一个进程而耗时不同活动对象Symbian OS用来处理异步方法调用的特殊对象使得进行合作的多个线程能够更加有效的利用资源堆/栈线程使用的内存空间堆必须显式的申请和释放栈空间由OS负责管理,北航分布与移动计算实验室,29,基础概念,LeaveSymbian OS的错误处理机制与Trap Harness一起使用与标准C+中的catch/throw机制类似Panic致命错误退出应用程序Panics要么由OS触发,要么由一个出现了严重错误的用户线程触发,如栈溢出,北航分布与移动计算实验室,30,Symbian OS体系结构,Symbian OS,北航分布与移动计算实验室,31,组件构架,北航分布与移动计算实验室,32,应用程序UI,对于用户而言,Symbian OS就是一系列的视图Symbian应用程序UI包括:一个App UI对象,用户处理用户交互命令;由各种图形UI元素(Controls)组成的应用程序视图(View);与设备无关的视图,负责将应用程序数据显示在控件中或打印出来。(可选),北航分布与移动计算实验室,33,例子:Agenda视图,UIQ,S60,S80,S90,北航分布与移动计算实验室,34,App UI由GUI控件构造,GUI系统Uikon Core+Qikon on UIQ,orAvkon on S60,orCkon on S80 and S90,北航分布与移动计算实验室,35,UI例子,TechView,R380s,北航分布与移动计算实验室,36,控件例子,TechView屏幕快照,北航分布与移动计算实验室,37,UI与图形,Qi/Av/Ckon提供了UI参考实现的某些功能标准的EIKON是标准控件的工具集CONE:CONtrol EnvironmentApparc:Application Architecture Component,定义了应用程序结构,北航分布与移动计算实验室,38,GUI由图形库支持,图形基础图形设备接口(GDI)设备无关UI图形打印图形所见即所得字体、缩放、24位色图形组件BITGDI:快速粘贴、缩放、旋转等Window Server共享屏幕键盘与指针保持所有应用程序的轨迹发送重画请求,北航分布与移动计算实验室,39,数据管理,绝大多数的应用程序都具有分离的UI和引擎引擎能够理解程序的核心算法和数据存储而不知道数据的图形显示及UISymbian支持相同的引擎与不同的UI配合使用客户/服务器的应用程序模式使得UI和引擎能够更好地分离,北航分布与移动计算实验室,40,支持库,能够被应用程序直接使用的复杂引擎Rich Text(ETEXT)文件存储工具(STORE)数据库工具(DBMS)音频基本程序框架库(BAFL),北航分布与移动计算实验室,41,Base提供了访问硬件的接口,Symbian Base主要包含了4个部分Symbian Base为其他所有组件提供了基础服务和编程框架,北航分布与移动计算实验室,42,Symbian Base,用户可见的部分User LibraryFile ServerKernel负责管理设备资源:CPU,内存,线程调度Device Drivers负责驱动硬件设备Device Drivers的代码包括两个部分,主要的部分在内核方,API部分在用户方,北航分布与移动计算实验室,43,E32映象,E32是Symbian OS的核心部分Kernel Executive和User Library可以看作是一个函数集合(库);Kernel Executive运行在特权态(privileged processor state)Kernel server也是处于特权态的线程User Processes是应用程序和系统服务器,北航分布与移动计算实验室,44,通信,通信是Symbian组件联系和消息传递的基础。提供了通信协议中通用的操作接口,如接收数据、发送数据、建立连接、配置网络等。Socket是通信的端点,Symbian提供了类似Berkley socket的socket APISymbian还提供了例如主机名解析、服务解析、协议信息等访问方法可用的协议包括IrDA,PPP,SLIP,GPRS,Bluetooth,TCP/IP以及RS232通常通信是在应用程序引擎层访问的,服务器:C32,ESOCK,ETEL,NETDIAL,北航分布与移动计算实验室,45,移植到新设备,如果将系统应用到同一个系列的其他产品(如同属于S60),几乎不用修改如果移植到不同的系列(S60-UIQ等),则还要修改GUI以及应用程序UI及视图如果新的设备包含了新的硬件,则可能需要修改Base部分,跨系列,Qikon:UIQAvkon:S60Ckon:S80/90,北航分布与移动计算实验室,46,Java,Symbian OS支持MIDP(CLDC1.1,MIDP2.0)及PersonalJava,北航分布与移动计算实验室,47,Java 优缺点,在2006年以前所有智能手机都支持广泛运行在各种手机上一次编写,多处运行性能和功能一直在提高,性能问题依赖虚拟机,北航分布与移动计算实验室,48,Java on Symbian OS,第一个实现,1999,ER5JDK 1.1.4Personal Java,2000,Symbian OS v6.0内存占用少提供了Javaphone APIJ2ME,MIDP1.0,2002,Symbian OS v7.0J2SE功能的一个子集占用内存较少提供了对MIDlet的支持MIDP2.0,Symbian OS V7.0sUI 功能增强安全蓝牙等等.,北航分布与移动计算实验室,49,问题,?,北航分布与移动计算实验室,50,20 minutes break,北航分布与移动计算实验室,51,Symbian SDK及其开发环境,北航分布与移动计算实验室,52,内容,Symbian SDK简介常用命令主要开发工具获取帮助,北航分布与移动计算实验室,53,开发环境的搭建,安装SDK到Nokia论坛下载最新的Series 60 SDK for Symbian OS到http:/网站下载最新的Active Perl Script 安装程序 到http:/下载最新的J2RE 安装SDK,推荐为Symbian开发单独建一个目录检查环境变量设定EPOCROOT=安装目录(去盘符)在系统PATH中加入 epoc32tools目录以及epoc32gccbin目录就可以了,北航分布与移动计算实验室,54,Symbian SDK的获得,可以从诺基亚网站下载http:/60 SDKs for Symbian OS我们使用的是 S60 SDK 2.0 for VC,北航分布与移动计算实验室,55,VC平台安装注意事项,Path:C:Program FilesMicrosoft Visual StudioVC98Bin;C:Program FilesMicrosoft Visual StudioCommonMSDev98Bin,北航分布与移动计算实验室,56,软件安装,安装Series 60 SDK for VC6软件,北航分布与移动计算实验室,57,SDK目录结构,北航分布与移动计算实验室,58,epoc32子目录,北航分布与移动计算实验室,59,SDK工具模拟器,用于运行,调试,测试Symbian程序便于程序调试和错误追踪并不是所有功能都能模拟,如兰牙通信示例:Start|Programs|Symbian 7.0s SDKs|Seriese 60 2.1|Enumlator(Release)C:epoc wins-rel,北航分布与移动计算实验室,60,文件&程序,在Symbian手机中,z:对应ROM,c:对应RAM(8MB),d:对应存储棒在SDK中,c:对应的目录是epoc32winscd:对应于目录是epoc32winsd z:对应的目录是epoc32releasewinsurelz或epoc32releasewinsudebz,北航分布与移动计算实验室,61,磁盘目录,每个磁盘下一般都具有如下标准目录system 包含所有系统文件systemApps 所有应用程序systemAppsappnameappname.appsystemLibs 共享.dlldocuments 用户文件,北航分布与移动计算实验室,62,SDK 帮助系统,北航分布与移动计算实验室,63,其他工具,Bitmap Converter BMCONVResource compiler EPOCRCAIF Builder(.rss-.aif)Menu BuilderMeadApplication Installer makesisCS Help Compiler(.hlp)S60 AppWizard,北航分布与移动计算实验室,64,目标二进制,支持的平台WINS(单进程)VC6WINSCWCW_IDEARM4ARMITHUMB,版本udeburel,北航分布与移动计算实验室,65,ABIs,即Application Binary InterfacesSymbian程序针对ARM平台可以按照三个模式build:ARM4,ARMI,THUMB电话制造商指定使用的ABI通常是THUMBARMI代码能够同时与THUMB和ARM4交互,北航分布与移动计算实验室,66,Bldmake&abld工具,使用bldmake和abld工具根据描述文件bld.inf和.mmp文件将源文件build成指定平台和版本的二进制代码,北航分布与移动计算实验室,67,使用模拟器开发,C是可以被编译成任何指令集二进制文件的独立于平台的语言。,北航分布与移动计算实验室,68,Build工具与IDEs,通常是先用命令行创建和配置项目,然后使用IDE;也可以使用AppWizard我们使用MS Visual Studio 6.0其他的IDE工具包括:Metrowerks的CodeWarriorBorland C+builder(mobile)Eclipse,北航分布与移动计算实验室,69,配置VC,把Symbian7.0Series60Series60Tools Application Wizard目录下的 AvkonAppWiz.awx和AVKONAPPWIZ.HLP文件拷贝到vc6的模板目录VSROOT Common MSDev98 Template 打开VC,就可以在新建工程对话框中看见S60 Symbian开发向导了,北航分布与移动计算实验室,70,配置VC,安装工具条Epoctoolbar将EpocTools.dll 拷贝到CommonMSDev98Addins启动VC6选择 Tools Customize from the menu bar点击 Add-ins and Macro Files tab选中 EPOC Toolbar Add-in点击 Close buttonEPOC 工具条应该出现菜单栏上,北航分布与移动计算实验室,71,使用VC6,也可以直接使用S60 SDK提供的VC6的AppWizard演示创建VC的项目文件(现成例子)bldmake bldfilesabld makefile vc6演示(HelloWorld),北航分布与移动计算实验室,72,使用VC,使用VC Appwizard,北航分布与移动计算实验室,73,使用VC,使用现有的例子进入C:Symbian7.0sSeries60_v20Series60Exhelloworldbasicgroup运行 bldmake bldfiles运行 abld makefile vc6用VC打开EPOC32BUILDSYMBIAN7.0SSERIES60_V20SERIES60EXHELLOWORLDBASICGROUPHELLOWORLDBASICWINS配置project-setting-executable for debug session为Epoc32releasewinsudebepoc.exe编译运行例子尝试跟踪例子,北航分布与移动计算实验室,74,其他平台Build演示,WINS(Windows 单进程命令行)bldmake bldfilesabld build wins udebARMIbldmake bldfilesabld build armi urelTHUMBbldmake bldfilesabld build thumb urel演示,北航分布与移动计算实验室,75,获取例子,安装SDK后,可以学习例子程序%EPOCROOT%Examples%EPOCROOT%Series60Ex%EPOCROOT%SymbianSampleCode首先学习ExamplesBasics中的例子,北航分布与移动计算实验室,76,获取帮助,安装SDK后的Help文件Symbian 开发者论坛Nokia开发者论坛www.NewLC.com,北航分布与移动计算实验室,77,Symbian书籍,北航分布与移动计算实验室,78,问题,?,北航分布与移动计算实验室,79,完成练习1,练习1:Symbian基本命令,北航分布与移动计算实验室,80,Symbian软件开发概述,北航分布与移动计算实验室,81,使用bldmake&abld,北航分布与移动计算实验室,82,使用bldmake,Bldmake为工程创建abldcd myprojectgroupBldmake bldfiles使用abld创建组件或者工程文件Abld build 或者Abld build wins udeb,北航分布与移动计算实验室,83,Bld.inf 文件,组件定义文件PRJ_MMPFILESHelloWorld.mmp与MMP在同一个目录,北航分布与移动计算实验室,84,编译过程,北航分布与移动计算实验室,85,exe程序的.mmp文件,北航分布与移动计算实验室,86,UIDs,每个应用程序都具有唯一的UIDsUID是一个具有唯一性的32位数字Symbian用UIDs(而不是扩展名)来标识不同的文件类型在项目定义文件(.mmp)中指定UIDs,北航分布与移动计算实验室,87,UIDs,北航分布与移动计算实验室,88,UID1文件类型指示器,指定了文件的类型.EXE(UID1=KExecutableImageUid).DLL(UID1=KDynamicLibraryUid)存储文件或者其他格式的文件,北航分布与移动计算实验室,89,UID2子类指示器,UID2指明了不同类型的DLL或者数据文件EXE程序不需要UID2对于一个应用程序而言UID2可以三种之一KUidAppKUidAppDllDocKuidAppInfoFileUID2定义在APADEF.H和APGICHFL.H中,北航分布与移动计算实验室,90,UID3代码指示器,应用程序DLL(.app)唯一性的标识应用程序文档或数据文件将其关联到特定的执行文件和图标对于EXE而言,不需要UID2或UID3对于一个应用程序而言,其dll文件、文档以及AIF文件的UID3都是一样的。,北航分布与移动计算实验室,91,UIDs的分配,从Symbian开发者网络可以得到发送email到指明需要的UIDs的个数指明应用程序或者项目名称0 x01000000到0 x0FFFFFFF之间的UIDs用于实验通常最多能够申请10个UIDs,除非是获得了Symbian授权的公司。,北航分布与移动计算实验室,92,mmp文件,每个项目都具有一个项目定义文件,即mmp文件,mmp文件包含了如下信息目标名称目标类型UID源文件目录源文件列表用户包含文件目录系统包含文件目录库文件调试库文件,北航分布与移动计算实验室,93,建立dll,北航分布与移动计算实验室,94,dll 的mmp文件实例,UID2指明了静态接口DLL,Dll指明了UID1的值,北航分布与移动计算实验室,95,编译CreateStaticDll,例如,创建一个应用程序引擎.dll步骤,北航分布与移动计算实验室,96,Build 一个.app,北航分布与移动计算实验室,97,一个app的mmp文件,北航分布与移动计算实验室,98,编译HelloWorld,GUI应用程序.app步骤,北航分布与移动计算实验室,99,GUI资源文件,资源文件描述了如菜单、对话框、工具条等信息包含了资源的索引信息由文本资源文件.rss经过资源编译器(rcomp.exe)编译后产生资源编译器可以由abld.bat显式的调用,如果使用IDE,则将IDE自动调用,北航分布与移动计算实验室,100,资源编译器输出文件,二进制资源文件(.rsc,.r01,.r02,).rsc用于缺省语言版本,而.r01则表示英国英语版本,.r02是法语版本每个资源由资源头文件.rsg中的一个索引标识.rsg为资源头文件,它包含了一系列的#define语句,定义了资源文件中的每个资源。索引便于更有效的查找资源一个资源文件中可以有1到4095个资源,北航分布与移动计算实验室,101,问题,?,北航分布与移动计算实验室,102,应用程序开发,北航分布与移动计算实验室,103,Symbian GT到SDK的发展过程,北航分布与移动计算实验室,104,Symbian OS的程序,北航分布与移动计算实验室,105,Exe&DLL,Symbian中的可执行程序分为两种,EXE和DLLEXE,具有一个主入口E32Main()的程序,属于独立的进程,常做服务器。DLL,程序代码库,可以有多个入口,并没有独立的进程。系统通常将DLL代码加载到当前thread上下文中。,北航分布与移动计算实验室,106,EXEs与DLLs的区别,EXEs用于图形无界面应用程序或者服务器单入口代码独立运行在PC上是独立的窗口,DLLs用于GUI应用程序多入口代码可共享在没有被使用时可以被卸载可以作用共享库或者服务提供库(.app)(provider library),北航分布与移动计算实验室,107,DLL的两种类型,北航分布与移动计算实验室,108,DLL的两种类型,静态接口DLL(static interface dll)共享库(Shared library DLL)提供固定的API,可以为其他程序调用。共享库DLL在程序需要时加载调用。共享库DLL使用后缀名.dll多态接口DLL(polymorphic interface dll)提供库(provider library)实现了一个抽象API,后缀名通常不是.dll,而是.prn,.prt,.app。多态DLL通常具有单一的入口,由需要它的程序显式的加载,北航分布与移动计算实验室,109,静态接口DLL,北航分布与移动计算实验室,110,多态接口DLL,由于多态接口DLL只实现了预先定义的抽象方法,这使得不同服务能够通过相同的接口被启动。,北航分布与移动计算实验室,111,使用DLLs的优点,静态接口DLL高效使用内存-只加载一次二进制代码重用运行时加载,减少了执行代码大小多态接口DLL相同接口的多个实现.app DLL支持文档嵌入二者封装好,北航分布与移动计算实验室,112,连接和装载,北航分布与移动计算实验室,113,Symbian编码规范,目的便于阅读理解和维护便于检查,减少出错概率有助于交流维护Symbian C编程习惯基本准则遵循传统C规范有具有自己特色习惯决定成败,北航分布与移动计算实验室,114,Symbian编码规范,通常类和函数的第一个字母大写所有单词连接在一起除了宏和资源标识之外,避免使用下划线 _例如void TObject:PrepareForCommit();class CGlobalText;,北航分布与移动计算实验室,115,Symbian编码规范,自动变量(局部变量)第一个字母小写需要时才声明自动变量(不要象C语言那样,在方法开头就声明所有变量)永远不要在同一行初始化多个变量全局变量不鼓励使用全局变量大写字母开头非常量的全局数据在DLL中是不支持的;最好使用线程本地存储(T.L.S.),北航分布与移动计算实验室,116,Symbian编码规范,宏所有字母大写用下划线分隔单词IMPORT_C,EXPORT_C,_TEST_INVARIANT指针和引用类型*或 void TDemo:Append(const TDesC&aData);,北航分布与移动计算实验室,117,Symbian编码规范,类名类名通常只能以C,R,T,M开头结构用T开头静态类没有前缀字母驱动类用D开头例如Class CBase;Class TTypefaceInfo;Class RFont;Class MLaydoc;Class User;/静态类,北航分布与移动计算实验室,118,Symbian编码规范,方法名通用规则有效Setters通常是SetThing()Getters通常是Thing(),(如果该方法返回数据项的话)Void SetOffset(TInt aOffset)TInt Offset()const;TInt offset=Offset();“Get”用于获取引用TCharFormat format;GetCharFormat(format);,北航分布与移动计算实验室,119,Symbian编码规范,方法名(续)以L结尾的方法表示可能Leave以C结尾的方法表示其中将数据项放入了cleanup stack中以D结尾的方法表示其中的对象将被销毁例如CStoreMap*map=CStoreMap:NewLC();,北航分布与移动计算实验室,120,Symbian编码规范,成员变量以i开头例如class TObject TType iType;Tint iElemementOffset;TPtrC iComponentValue;,北航分布与移动计算实验室,121,Symbian编码规范,方法变量(形式参数)以a开头在元音前也不使用an例如void TObject:TObject(TType aType,TInt aElementOffset);最好使用方法重载,而不是缺省参数,这样可读性好,并且更加高效,北航分布与移动计算实验室,122,Symbian编码规范,常数K开头单词开头大写例如const TInt KMaxNameLength=0 x20;const TUid KEditableTextUid=268435548;,北航分布与移动计算实验室,123,Symbian编码规范,枚举应当被包含在相应的类中不要全局命名空间必须用一个有意义并且无歧义的名字T开头每个枚举成员E开头特定类中的常量可以实现成枚举型,这种情况下,可以使用K,北航分布与移动计算实验室,124,Symbian中的类,程序设计中常用的四种类:T-,C-,M-,R-类必须具有清晰的角色,而不是简单的方法与 数据的集合每个类一个头文件头文件的布局#include filesfriend classes;public,protected,private methods;private,protected,public data;,北航分布与移动计算实验室,125,基本类T类,属于数值类型,能够存在于栈中不需要显式的赋值及拷贝构造操作符,而是使用逐位复制不需要显式的析构函数,北航分布与移动计算实验室,126,基本类C类,分配在堆上从CBase派生的类具有构造函数和析构函数传递时不能复制对象,只能使用引用或指针,北航分布与移动计算实验室,127,基本类M类,表示混合接口类这种类通常只定义成员方法,而不实现它们,也没有成员变量C类也可用从M类派生,从而实现M类中定义的方法M类没有构造函数,也没有析构函数常用于定义回调函数等可用于多重继承,北航分布与移动计算实验室,128,基本类R类,表示资源类通常有真正资源的句柄不同R类句柄的含义可以完全不同R类对象可以逐位拷贝没有明确的构造函数、析构函数、拷贝构造函数以及赋值函数通常利用open()方法来打开一个R类,而用close()关闭之Create(),Destroy()Allocate(),Free()在R类的关闭函数中,通常需要释放占用的资源,北航分布与移动计算实验室,129,基本类静态类,静态类不用实例化没有前缀通常是不同静态实用函数的封装如User,北航分布与移动计算实验室,130,OO设计,帮助设计UML类图描述模式设计UML简介结构块 事物(4种)结构事物(7种)行为事物 分组事物 注释事物关系(4种)图(9种)运行规则公共约束,北航分布与移动计算实验室,131,UML类图示例,北航分布与移动计算实验室,132,GUI应用程序框架,北航分布与移动计算实验室,133,问题,?,北航分布与移动计算实验室,134,完成2,练习2:Symbian开发环境熟悉,北航分布与移动计算实验室,135,内存管理,北航分布与移动计算实验室,136,重要性,本来内存就少系统运行时间会很长,极少重启内核、服务器以及一些应用程序运行几年即使电源关闭,也需要保持某些应用的状态少量的内存泄漏经过积累也会造成灾难性的后果编写的程序必须是没有内存泄漏的,北航分布与移动计算实验室,137,因此,所有分配的堆内存必须至少有一个指针关联(即使出现内存不足的情况)所有堆内存必须在使用完以后尽快释放,北航分布与移动计算实验室,138,独特机制,Symbian OS采用不同于其他任何平台的独特机制Trap harness(陷阱套)执行代码Cleanup stack(清除栈)Two phase construction(两阶段构造)复合对象必须熟悉上述三个机制,以保证程序是内存安全的,北航分布与移动计算实验室,139,示例,使用了3种机制,北航分布与移动计算实验室,140,栈与堆对象,栈中的对象能够被系统自动删除堆中的对象必须由程序员显式的删除栈中的指针可以指向堆空间,北航分布与移动计算实验室,141,内存泄漏,分配在堆中的对象,不再有指针变量引用(孤儿对象),从而无法释放该内存,就形成了内存泄漏。,丢失该对象的地址,无法删除,北航分布与移动计算实验室,142,发生异常时Leave,北航分布与移动计算实验室,143,捕捉异常,异常通常是运行时因为缺少某种资源而引发的错误:例如内存不足或者通信端口不可用异常与程序错误的区别:后者是可以通过修改程序而消除掉的,但是要确保程序不会产生异常几乎是不可能的程序发生异常时Leave,会被上层调用中的TRAP 捕捉,北航分布与移动计算实验室,144,TRAP Harness宏,如果异常时Leave,将会返回到最近的一个TRAP Harness两个宏TRAP与TRAPD后者不需要程序员自己错误参数在程序的最开始处使用TRAPTRAP Harness要少用,尤其要避免过多嵌套,北航分布与移动计算实验室,145,New(ELeave),属于c+的操作符重载任何类都可以使用若没有足够内存空间的话,将调用User:Leave()以下二者相当,北航分布与移动计算实验室,146,TRAP与Leave提示,将95的错误上交给系统处理,不要自己处理如果不是自己处理所有错误信息,则将错误用User:Leave()或User:LeaveIfError()上传TRAP的代价很高,永远不要连续使用多个TRAP,而是让方法Leave,从而将错误交给调用者处理记住使用new(ELeave)而不是new,北航分布与移动计算实验室,147,Cleanup Stack,清除栈用来保存分配在堆上的对象指针一旦出现异常,系统能够根据清除栈释放出错程序在堆中分配的空间,从而避免了内存泄漏,北航分布与移动计算实验室,148,Cleanup Stack,对象分配失败,北航分布与移动计算实验室,149,Cleanup Stack,使用场合在一个可能Leave的函数中产生的,栈上指向C对象的自动变量指针要Push到清除栈中。一旦出现了异常,TRAP harness将调用PopAndDestropy()来清空清除栈上所有从调用TRAP时压进去的变量,并释放相应的堆空间。当不会出现Leave时,需要将对象指针从清除栈中弹出。当复合对象的成员变量指向一个对象时,由该复合对象的析构函数负责删除该对象。,北航分布与移动计算实验室,150,看看弹出了哪些对象,北航分布与移动计算实验室,151,声明Clean Stack,每个应用程序都有自己的清除栈控制台程序(.exe)需要在E32Main中声明而GUI程序则由CONE创建(因此不需要我们自己创建),北航分布与移动计算实验室,152,注意,类的成员变量不用放在清除栈中否则会造成多次删除类的析构函数中删除一次在退出清除栈时删除一次,北航分布与移动计算实验室,153,两阶段构造,例子,第一阶段构造,第二阶段构造,北航分布与移动计算实验室,154,两阶段构造,第一阶段就是c+的构造函数在第一阶段中,不能出现Leave,也不能处理失败,因此需要将可能失败的语句移出构造函数复杂的类对象才采用两阶段构造首先是调用通常的构造函数,其中的所有操作都应当是安全的(不会Leave)第二阶段构造函数ContructL()则是进行可能Leave的构造(如申请内存空间或其他资源)工厂函数NewL将二者放在一起(即实现了两阶段构造)某些(自包含)类只需要单阶段构造,北航分布与移动计算实验室,155,两阶段构造函数,需要进行两阶段构造的类只能调用工程函数NewL()来构造,因为其普通的构造函数标识为private需要进行两阶段构造的类最典型的是具有一个指向另一个C类指针的C类分析:为什么要两阶段构造?对象的构造安全防止内存泄漏

    注意事项

    本文(Symbian实践培训讲义.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开