Android应⽤程序开发(第三版)-课后习题解答
第⼀章Android简介
1.简述各种⼿机操作系统的特点.
答案:⽬前,⼿机上的操作系统主要包括以下⼏种,分别是Android、iOS、WindowsMobile、WindowsPhone7、Symbian、⿊莓、PalmOS和Linux。
(1)Android是⾕歌发布的基于Linux的开源⼿机平台,该平台由操作系统、中间件、⽤户界⾯和应⽤软件组成,是第⼀个可以完全定制、免费、开放的⼿机平台。Android底层使⽤开源的Linux操作系统,同时开放了应⽤程序开发⼯具,使所有程序开发⼈员都在统⼀、开放的开发平台上进⾏开发,保证了Android应⽤程序的可移植性。
(2)iOS是由苹果公司为iPhone、iPodtouch、iPad以及AppleTV开发的操作系统,以开放源代码的操作系统Darwin为基础,提供了SDK,iOS操作系统具有多点触摸操作的特点,⽀持的控制⽅法包括滑动、轻按、挤压和旋转,允许系统界⾯根据屏幕的⽅向⽽改变⽅向,⾃带⼤量的应⽤程序。
(3)WindowsMobile是微软推出的移动设备操作系统,对硬件配置要求较⾼,⼀般需要使⽤⾼主频的嵌⼊式处理器,从⽽产⽣了耗电量⼤、电池续航时间短和硬件成本⾼等缺点,WindowsMobile系列操作系
统包括Smartphone、PocketPC和PortableMediaCenter。随着WindowsPhone7的出现,WindowsMobile正逐渐⾛出历史舞台。
(4)WindowsPhone7具有独特的“⽅格⼦”⽤户界⾯,⾮常简洁,⿊⾊背景下的亮蓝⾊⽅形图标,显得⼗分清晰醒⽬,集成了XboxLive游戏和Zune⾳乐功能,可见WindowsPhone7对游戏功能和社交功能的重视。
(5)Symbian是为⼿机⽽设计的实时多任务32位操作系统,它的功效低,内存占⽤少,提供了开发使⽤的函数库、⽤户界⾯、通⽤⼯具和参考⽰例。操作系统不是完全开放的,核⼼代码不开放,但是API⽂档是公开的。
(6)⿊莓系统主要在⿊莓⼿机上使⽤,其特⾊是⽀持电⼦邮件推送功能,邮件服务器主动将收到的邮件推送到⽤户的⼿持设备上,⽽不需要⽤户频繁地连接⽹络查看是否有新邮件。同时,⿊莓系统提供⼿提电话、⽂字短信、互联⽹传真、⽹页浏览及其它⽆线信息服务功能。⿊莓系统主要针对商务应⽤,具有很⾼的安全性和可靠性。
(7)PalmOS由拥有较多的第三⽅软件,是32位的嵌⼊式操作系统,主要在移动终端上使⽤,操作系统本⾝所占的内存极⼩,不具备录⾳和MP3播放功能。
(8)Linux⼿机操作系统具有开放源代码的特性,但是也包含⼊门难度⾼,集成开发环境差,Linux的产品与个⼈计算机的连接性较差,具有较强的开发实⼒的公司很少等不⾜。
2.简述Android平台的特征
答案:Android⼴泛⽀持GSM、3G和4G的语⾳与数据业务,⽀持接收语⾔呼叫和SMS短信,⽀持数据存储共享和IPC消息机制,为地理位置服务(如GPS)、⾕歌地图服务提供易于使⽤的API函数库,提供组件复⽤和内置程序替换的应⽤程序框架,提供基于WebKit的浏览器,⼴泛⽀持各种流⾏的视频、⾳频和图像⽂件格式。Android系统提供了访问硬件的API库函数,⽤来简化像摄像头、GPS等硬件的访问过程。在内存和进程管理⽅⾯,Android为了保证⾼优先级进程运⾏和正在与⽤户交互进程的响应速度,允许停⽌或终⽌正在运⾏的低优先级进程,以释放被占⽤的系统资源。Android进程的优先级并不是固定的,⽽是根据进程是否在前台或是否与⽤户交互⽽不断变化的。在界⾯设计上,Android提供了丰富的界⾯控件供使⽤者调⽤,从⽽加快了⽤户界⾯的开发速度,也保证了Android平台上的程序界⾯的⼀致性。Android提供轻量级的进程间通讯机制Intent,使⽤跨进程组件通信和发送系统级⼴播成为可能。Android提供了Service作为⽆⽤户界⾯、长时间后台运⾏的组件,可为应⽤程序提供特定的后台功能,还可以实现事件处理或数据更新等功能。Android⽀持⾼效、快速的数据存储⽅式,同时为了便于跨进程共享数据,Android提供了通⽤的共享数据接⼝ContentProvider,可以⽆需了解数据源、路径的情况下,对共享数据进⾏查询、添加、删除和更新等操作。Android⽀持位置服务和地图应⽤,
可以通过SDK提供的API直接获取当前的位置,追踪设备的移动路线,或设定敏感区域,并可以将Google地图嵌⼊到Android应⽤程序中,实现地理信息可视化开发。Android⽀持Widget插件,可以⽅便地在Android系统上开发桌⾯应⽤,实现⽐较常见的⼀些桌⾯⼩⼯具,或在主屏上显⽰重要的信息。Android⽀持使⽤本地代码(C或C++)开发应⽤程序的部分核⼼模块,提⾼了程序的运⾏效率,并有助于增加Android开发的灵活性。
3.描述Android平台体系结构的层次划分,并说明各个层次的作⽤。
答案:Android采⽤了软件堆层的架构,共分为四层:Linux内核、中间件层、应⽤程序框架层和应⽤程序层。
(1)Linux内核提供由操作系统内核管理的底层基础功能。
(2)中间件层包含函数库和Android运⾏时,函数库主要提供了六个基于C/C++的函数库,包括:SurfaceManager,⽀持显⽰⼦系统的访问,为多个应⽤程序提供2D、3D图像层的平滑连接;MediaFramework,基于OpenCORE的多媒体框架,实现⾳频、视频的播放和录制功能,⼴泛⽀持多种流⾏的⾳视频格式,包括MPEG4、H.264、MP3、AAC、AMR、JPG和PNG等;SQLite,轻量级的关系数据库引擎;OpenGLES,基于硬件的3D图像加速;FreeType,位图与⽮量字体渲染;WebKit,Web浏览器引擎;SGL,2D图像引擎;SSL,数据加密与安全传输的函数库;libc,标准C运
⾏库,是Linux系统中底层的应⽤程序开发接⼝。Android运⾏时包含核⼼库和Dalvik虚拟机,核⼼库为程序开发⼈员提供了Android系统的特有函数功能和Java语⾔基本函数功能,Dalvik虚拟机实现了基于Linux内核的线程管理和底层内存管理,也可以执⾏Dalvik可执⾏格式。
(3)应⽤程序框架提供了Android平台基本的管理功能和组件重⽤机制。
(4)应⽤程序提供了⼀系列核⼼应⽤程序。
第⼆章Android开发环境
3.在AndroidSDK中,Android模拟器、Android调试桥和DDMS是Android应⽤程序开发过程中经常使⽤到的⼯具,简述这三个⼯具的⽤途。
答案:Android模拟器主要⽤来调试Android应⽤程序,模拟器可以仿真⼿机的绝⼤部分硬件和软件功能,⽀持加载SD卡映像⽂件,更改模拟⽹络状态、延迟和速度,模拟电话呼叫和接收短信等。Android调试桥是⽤于连接Android设备或模拟器的⼯具,负责将应⽤程序安装到模拟器和设备中,或从模拟器或设备中传输⽂件。DDMS是Android系统中内置了调试⼯具,可以⽤来监视Android系统中进程、堆栈信息,查看logcat⽇志,实现端⼝转发服务和屏幕截图功能,模拟电话呼叫和SMS短信,以及浏览Android模拟器⽂件系统等。
第三章第⼀个Android程序
1.简述R.java和l⽂件的⽤途。
答案:R.java⽂件是ADT⾃动⽣成的⽂件,包含对drawable、layout和values⽬录内的资源的引⽤指针,Android程序能够直接通过R类引⽤⽬录中的资源。l是XML格式的Android程序声明⽂件,包含了Android系统运⾏Android程序前所必须掌握的重要信息,这些信息包括应⽤程序名称、图标、包名称、模块组成、授权和SDK最低版本等,⽽且每个Android程序必须在根⽬录下包含⼀个l⽂件。
第四章Android⽣命周期
1.简述Android系统前台进程、可见进程、服务进程、后台进程和空进程的优先级排序原因。
答案:前台进程是Android系统中最重要的进程,是与⽤户正在交互的进程,所以被排放在⾸位;可见进程和服务进程都是包含服务的进程,不在前台与⽤户交互,不响应界⾯时间的进程,⽽是在后台长期运⾏,所以,他们被排放在前台进程之后;⽽后台进程和空进程是不包含任何已经启动服务的进程,在系统⽐较资源⽐较紧张的时候,会⾸先被清除,所以他们被排放在最后。
2.简述Android系统的四种基本组件Activity、Service、BroadcaseReceiver和ContentProvider的⽤途。
答案:Activity是Android程序的呈现层,显⽰可视化的⽤户界⾯,并接收与⽤户交互所产⽣的界⾯事件,⽤于提⽰⽤户程序已经正常启动。Service⼀般⽤于没有⽤户界⾯,但需要长时间在后台运⾏的应⽤。BroadcaseReceiver是⽤来接受并响应⼴播消息的组件。ContentProvider是Android系统提供的⼀种标准的共享数据的机制,应⽤程序可以通过ContentProvider访问其他应⽤程序的私有数据。
3.简述Activity⽣命周期的四种状态,以及状态之间的变换关系。
答案:Activity的四种状态,分别是活动状态、暂停状态、停⽌状态和⾮活动状态。活动状态是完全能被⽤户看到,与⽤户进⾏交互的状态;暂停状态是Activity不处于⽤户界⾯的最上层,不能与⽤户进⾏交互的状态;停⽌状态是指Activity在界⾯上完全不能被⽤户看到的状态;除以上三种状态之外,就是⾮活动状态。他们的变换关系是,当第⼀个Activity启动后,则Activity处于活动状态;如果启动新的Activity,部分遮挡先前的Activity,则先前的Activity转换为暂停状态;如果新启动的Activity完全遮挡了先前的Activity,则先前的Activity转换为停⽌状态;活动的Activity被⽤户关闭,或暂停状态或停⽌状态的Activity被系统终⽌后,都会转换成⾮活动状态。
4.简述Activity事件回调函数的作⽤和调⽤顺序。
答案:Activity事件回调函数具体分为Activity⽣命周期的事件回调函数和Activity状态保存和恢复函数的
事件回调函数,Activity⽣命周期的事件回调函数的作⽤主要是为了让Activity程序了解⾃⾝状态的变化;Activity状态保存和恢复函数的事件回调函数的作⽤主要是保存或恢复Activity的状态信息。
Activity事件的调⽤顺序是:
(1)onCreate,完全⽣命周期开始,初始化Activity;
(2)onStart,可视⽣命周期开始,对⽤户界⾯进⾏必要的更改;
(3)onRestoreInstanceState,恢复onSaveLnstanceState保存的⽤户界⾯信息;
(4)onResume,活动⽣命周期开始,保存界⾯信息;
(5)onSaveInstanceState,在onResume后,保存界⾯信息;
(6)onRestart,重新进⼊可视⽣命周期前,载⼊界⾯所需要的更改信息;
android模拟点击(7)onPause,活动⽣命周期结束,保存持久地数据或释放占⽤的资源;
(8)onStop,可视⽣命周期结束,保存持久地数据或释放占⽤的资源;
(9)onDestory,完全⽣命周期结束,释放资源
第五章Android⽤户界⾯
1.简述6种界⾯布局的特点。
答案:6种界⾯布局分别为:线性布局、框架布局、表格布局、相对布局、绝对布局和⽹格布局。
(1)线性布局的⼦元素可垂直或者⽔平排列,但是每⼀列/⾏中,只能有⼀个界⾯元素。
(2)框架布局是只存放⼀个元素的空⽩空间,且位置只能是空⽩空间的左上⾓,如果有多个⼦元素,后放置的⼦元素会遮挡先放置的⼦元素。
(3)表格布局将屏幕划分⽹格,把界⾯元素添加到⽹格中,⽀持嵌套,也可添加其他的界⾯布局。
(4)相对布局中的界⾯元素的位置是通过与其他的元素的相对位置确定的,具有灵活性。
(5)绝对布局的界⾯元素的位置是通过坐标确定的,他是不推荐使⽤的⼀种布局。
(6)⽹格布局将⽤户界⾯划分为⽹格,界⾯元素可随意摆放在这些⽹格中,界⾯元素可以占⽤多个⽹格的,使界⾯设计更为灵活。
3.简述Android系统三种菜单的特点及其使⽤⽅式。
答案:Android系统⽀持的三种菜单分别是:选项菜单、⼦菜单和快捷菜单。
(1)选项菜单是常⽤的Android系统菜单,可分为图标菜单和扩展菜单,图标菜单的⼦项最多是六个,⽀持显⽰图标,不⽀持单选框和复选框;⽽当⼦项多余六个时,采⽤扩展菜单,扩展菜单的⼦项是垂直排列,⽀持单选框和复选框,不⽀持显⽰图标。第⼀次启动选项菜单时,只需要调⽤⼀次onCreateMenu函数。
(2)⼦菜单的表现形式是浮动窗体的形式,适应⼩屏幕的显⽰形式,能够展⽰更加详细的信息,通过addSubMenu函数增加⼦菜单,但不⽀持嵌套。在选项菜单和快捷菜单中使⽤⼦菜单,便于显⽰和分类相似的菜单⼦项。
(3)快捷菜单采⽤动窗体的显⽰形式,启动⽅式特别,点击界⾯元素超过2秒后,则启动该界⾯元素的快捷菜单。每次启动快捷菜单时,都要调⽤⼀次onCreateMenu函数。
4.说明使⽤操作栏为程序开发所带来的便利。
答案:操作栏代替了传统的标题栏功能,右侧⽤来显⽰“选项菜单”的菜单项,但所显⽰的内容,会根据操作栏所具有的空间不同⽽具有不同的现实⽅式。在屏幕尺⼨较⼩的设备上,操作栏会⾃动隐藏菜单项的⽂字,⽽仅显⽰菜单项的图标;⽽在屏幕尺⼨较⼤的设备上,操作栏会同时显⽰菜单项的⽂字和
图标。操作栏提供多个实⽤的功能,包括(1)将“选项菜单”的菜单项显⽰在操作栏的右侧;(2)基于Fragment实现类似于Tab页的导航切换功能;(3)为导航提供可“拖拽—放置”的下拉列表;(4)可在操作栏上实现类似于“搜索框”的功能。
第六章组件通信与⼴播消息
1.简述Intent的定义和⽤途。
答案:Intent是⼀个动作的完整描述,包含了动作的产⽣组件、接收组件和传递的数据信息。Intent为Activity、Service和BroadcastReceiver 等组件提供交互能⼒,将⼀个组件的数据和动作传递给另⼀个组件。Intent的⼀个最常见的⽤途就是启动Activity和Service;另⼀个⽤途是在Android系统上发布⼴播消息,⼴播消息可以是接收到特定数据或消息,也可以是⼿机的信号变化或电池的电量过低等信息。
2.简述Intent过滤器的定义和功能。
答案:Intent过滤器是⼀种根据Intent中的动作(Action)、类别(Categorie)和数据(Data)等内容,对适合接收该Intent的组件进⾏匹配和筛选的机制。Intent过滤器的作⽤是匹配数据类型、路径和协议,还包括可以⽤来确定多个匹配项顺序的优先级。每个Intent过滤器可以定义多个<category>标签,程序开发⼈员可以使⽤⾃定义的类别,或使⽤Android系统提供的类别。
3.简述Intent解析的匹配规则。
答案:Intent解析的匹配规则是:
(1)Android系统把所有应⽤程序包中的Intent过滤器集合在⼀起,形成⼀个完整的Intent过滤器列表;
(2)在Intent与Intent过滤器进⾏匹配时,Android系统会将列表中所有Intent过滤器的“动作”和“类别”与Intent进⾏匹配,没有指定“动作”的Intent过滤器可以匹配任何的Intent,但是没有指定“类别”的Intent过滤器只能匹配没有“类别”的Intent;
(3)把Intent数据Uri的每个⼦部与Intent过滤器的<data>标签中的属性进⾏匹配;
(4)如果Intent过滤器的匹配结果多于⼀个,则可以根据在<intent-filter>标签中定义的优先级标签来对Intent过滤器进⾏排序,优先级最⾼的Intent过滤器将被选择。以上每步中不匹配的都将被过滤掉。
第七章后台服务
1.简述Service的基本原理和⽤途。
答案:Service能够长期在后台运⾏,适⽤于⽆需⽤户⼲预,且规则或长期运⾏的后台功能。⾸先,因为Service没有⽤户界⾯,更加有利于降低系统资源的消耗,⽽且Service⽐Activity具有更⾼的优先级,因此在系统资源紧张时,Service不会被Android系统优先终⽌。即使Service被系统终⽌,在系统资源恢复后Service也将⾃动恢复运⾏状态,因此可以认为Service是在系统中永久运⾏的组件。Service除了可以实现后台服务功能,还可以⽤于进程间通信(InterProcessCommunication,IPC),解决不同Android应⽤程序进程之间的调⽤和通讯问题。
第⼋章数据存储与访问
3.简述在嵌⼊式系统中使⽤SQLite数据库的优势。
答案:SQLite数据库的优势是其嵌⼊到使⽤它的应⽤程序中。这样不仅提⾼了运⾏效率,⽽且屏蔽了数据库使⽤和管理的复杂性,程序仅需要进⾏最基本的数据操作,其他操作可以交给进程内部的数据库引擎完成。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。