来源:奥鹏远程教育 日期: 作者:奥鹏作业辅导
可做全部院校网课作业、课程代看、网考、论文辅导!答案请加微信:xx99ttt 或QQ:1514133056
南开19秋《手机应用软件设计与实现》课程期末复习资料满分答案
《手机应用软件设计与实现》课程期末复习资料《手机应用软件设计与实现》课程讲稿章节目录:
第一章 智能手机发展简介
第一节 智能手机
第二节 智能手机操作系统
第三节 Android体系结构和内核
第四节 Android应用程序框架
第二章 开发环境搭建
第一节 Android SDK
第二节 Eclipse配置Android SDK、ADT
第三节 Android Studio简介
第四节 手机应用程序打包与安装
第五节 第一个手机应用程序
第三章 Activity初步知识
第一节 使用Eclipse进行简单的Android程序的开发
第二节 Android Project中的各主要构成及作用
第三节 Android程序的主要开发模式
第四节 Activity与AndroidManifest.xml文件的配置
第四章 Android基本控件
第一节 View控件和文本显示控件Textview
第二节 按钮Button、编辑框EditText、单选钮RadioButton、复选框CheckBox
第三节 下拉列表、图片视图、图片按钮
第四节 时间选择器、日期选择器
第五章 布局管理器
第一节 LinearLayout
第二节 FrameLayout
第三节 TableLayout
第四节 RelativeLayout
第六章 Android事件处理
第一节 事件处理的作用
第二节 常用的事件及相关处理接口
第三节 各种事件的使用及处理
第四节 利用各种事件完成常见操作程序的开发
第七章 Android扩展控件
第一节 滚动视图与列表
第二节 对话框
第三节 提示文本、拖动条、评分控件
第四节 提示框、图片文本切换
第五节 拖拉图片、网格视图
第六节 时钟、计时器、标签
第七节 菜单、隐式抽屉
第八节 缩放控制、弹出窗口、树形组件
第八章 数据存储方法与组件通信
第一节 Sharedpreferences存储和文件存储
第二节 数据库SQLite存储
第三节 ContentProvider
第四节 Intent深入
第五节 Activity深入
第九章 消息机制与服务
第一节 消息机制
第二节 Service介绍
第三节 广播及系统服务
第四节 AppWidget
第十章 多媒体技术及组件
第一节 绘制、Bitmap、Matrix、Animation
第二节 播放、拍照、录制、屏幕触控
第十一章 手机服务与网络通信、定位
第一节 手机服务
第二节 网络通信、Web数据交换
第三节 Socket与Web Service
第四节 WebView组件
第五节 Google API
第六节 位置管理
第七节 Map服务
第十二章 综合示例
第一节 程序设计与开发示例1 手机信息小助手系统
第二节 程序设计与开发示例1 停车场监控管理系统
第三节 程序设计与开发示例3 物流信息发布系统
第四节 程序设计与开发示例4 地图跟踪及定位、导航系统
★考核知识点: Activity生命周期
附1.1.1(考核知识点解释):
Activity声明周期方法中,启动时的调用顺序依次为
onCreate()->onStart()->onResume()
程序退出时的调用顺序依次为
onPause() --> onStop() --> onDestroy()
还包括onRestart()
因此并不包含onInit()
★考核知识点: 摄像头权限配置
附1.1.2(考核知识点解释)
根据Android系统应用程序权限使用要求,当调用摄像头拍照权限时,需要在AndroidManifest.xml中进行配置,因此选A。
B选项是挂载和卸载文件系统权限
C选项是向外部存储写入数据时所需权限
D选项是接入网络进行网络访问所需权限
★考核知识点: 数据存储之XML文件解析方法
附1.1.3(考核知识点解释)
Android系统中对XML文件解析时可采用SAX、DOM、PULL等方法,其中DOM方法是将整个文档调入内存,因此占用资源较多,相比较而言,SAX只调入文档的一部分加入内存。
★考核知识点: 位置管理与位置服务
附1.1.4(考核知识点解释)
通过LocationManager可以获取Location对象,进而得到关于位置的诸多属性和信息,在获取位置服务时,可以使用GPS也可以使用Wifi,其中GPS精度较高,但受限于障碍物、天气等原因,在室外使用时较好,室内无法获取GPS信号,且获取GPS信号时间消耗较多,使用过程中GPS模块一直开启,是手机中除了屏幕显示模块外最为耗电的模块。通过Wifi获得位置信息精度较低但获取速度快,且耗电量少。
★考核知识点: 适配器的作用
附1.1.5(考核知识点解释)
Android系统中提供了适配器机制,是一种MVC模式的具体体现,通过适配器将程序中的数据信息与程序界面的控件建立关联映射,进而通过控件显示数据。因此选择A。
★考核知识点: 数据存储之SQL数据库基本知识
附1.1.6(考核知识点解释)
SQLite是手机应用程序常用数据库;MySQL、SQL Server、DB2一般用于服务器端数据存储。SQLite是轻量型数据库,拥有便捷快速等特点,适用于移动端的数据存储。
★考核知识点: Activity生命周期、状态与执行顺序
附1.1.7(考核知识点解释)
Activity的创建和销毁共经历四种状态。1.活动状态:当前的Activity,位于Activity栈顶,用户可见,并且可以获得焦点。2.暂停状态:失去焦点的Activity,依然可见,即使在内存低的情况下,也不会被系统杀死。3.停止状态:该Activity被其他Activity所覆盖,不可见,但是仍然保存所有的状态和信息。当内存低的情况下,它将要被系统杀死。4.销毁状态:该Activity结束,或Activity所在的Dalvik进程结束。当它由可见状态转向半透明状态时,失去了焦点但依然可见,因此选择B。
★考核知识点: ContentResolver类基本用法
附1.1.8(考核知识点解释)
ContentProvider为存储和获取数据提供统一的接口。可以在不同的应用程序之间共享数据。Android已经为常见的一些数据提供了默认的ContentProvider。ContentProvider使用表的形式来组织数据,无论数据的来源是什么,ContentProvider都会认为是一种表,然后把数据组织成表格。ContentProvider提供了诸多方法,在实际使用中需要实现,如:
query:查询
insert:插入
update:更新
delete:删除
getType:得到数据类型
onCreate:创建
由于ContentProvider只是抽象类,所以在实际使用过程中,往往借助于ContentResolver进行具体实现,即欲实现查询就要实现ContentResolver的query方法,因此选择B。
★考核知识点: Activity基础知识
附1.1.9(考核知识点解释)
在Android系统中,Activity被以栈的方式进行组织,Activity共有四种启动模式,其中singleTop是保持该Activity在栈顶,singleTask是在栈中只存入单一一个Activity。当在不同的Activity间跳转时,实际上就是将Activity压栈和出栈的过程。因此选择D。
★考核知识点: 布局管理器之表格布局特点
附1.1.10(考核知识点解释)
在Android系统中,常见五种布局管理器,其中AbsoluteLayout由于不适应Android屏幕多样性已逐渐被废弃,其他四种布局分别是LinearLayout、FrameLayout、RelativeLayout和TableLayout,其中表格布局TableLayout具备折叠列的属性,不管屏幕是否能显示下,一旦启用该属性,如Android:collapseColumns="2,3"意味着将采用折叠第2,3列的方式进行显示。
★考核知识点: Service基本知识与获取途径
附1.1.11(考核知识点解释)
在Android系统中,获取Service对象需要通过getService()方法进行,通过一定的参数选项,指定获取哪些系统服务,该方法可按参数返回用户所需的系统Service对象。StartService是启动Service的一种方法,因此选择A
★考核知识点: Intent基本知识
附1.1.12(考核知识点解释)
在Android系统中,四大组件分别为Activity、Service、Broadcast Receiver和ContentProvider,Intent是连接四大组件的纽带,它可以实现程序在不同界面Activity间的切换,切换的同时携带数据及动作类型等信息。处理一个应用程序整体性的工作是AndroidManifest的作用;选项B是Service的作用;选项C是ContentProvider的作用。因此选D。
★考核知识点: Intent基本知识
附1.1.13(考核知识点解释)
在Android系统中,其采用的虚拟机是Dalvik,JVM是Java虚拟机,KVM是虚拟化技术的一种,Framework是Android中的框架层。JVM中,java文件被编译为class文件再被打包为jar文件,在Dalvik中,java文件被编译为dex文件再被打包为apk文件。在架构上,Dalvik虚拟机是基于寄存器实现的,JVM是基于栈实现的。因此选择A。
★考核知识点: 补间动画(渐变动画)基本知识
附1.1.14(考核知识点解释)
在Android系统中,动画分为两种,分别为补间动画(渐变动画)和帧动画。其中,补间动画又分为四大类,移动、缩放、旋转、透明,分别是Animation类的子类。因此,选择A。
★考核知识点: TextView文本组件与事件处理
附1.1.15(考核知识点解释)
在Android系统中,事件处理的过程是获取事件源、绑定事件监听器、监听事件、分发事件、处理事件,当特定监听器被设定为监听某个事件来源时,一旦符合监听器的策略,随即触发该事件。因此,当文本组件内容改变时则触发Change事件处理。因此选择C。
★考核知识点: Android应用程序项目工程架构分析
附1.1.16(考核知识点解释)
在Android项目工程中,res/values 专门存放应用使用到的各种类型数据。不同类型的数据存放在不同的文件中。res/layout 专门存放xml界面文件,xml界面文件和HTML文件一样,主要用于显示用户操作界面。res/raw/ 该目录用于存放应用使用到的原始文件,如音效文件等。编译软件时,这些数据不会被编译,它们被直接加入到程序安装包里。res/drawable 专门存放png、jpg等图标文件。在代码中使用getResources().getDrawable(resourceId)获取该目录下的资源。因此选D。
★考核知识点: 手机服务之传感器事件处理
附1.1.17(考核知识点解释)
在Android系统中,通过传感器对象获取传感器事件的信息,包括原始数据、数据精度、传感器类型等基本属性和方法。因此选D。
★考核知识点: Activity生命周期与执行顺序
附1.1.18(考核知识点解释)
在Android系统的Activity生命周期中,第一个执行的方法是onCreate,即启动后先后经历onCreate、onStart、onResume。
★考核知识点: 手机服务之蓝牙服务
附1.1.19(考核知识点解释)
在Android系统中获取手机服务通常通过一个管理类来获取其对应的类对象,通过对类对象的操作,实现对相应服务的获取。在建立蓝牙连接的过程中,通过适配器组件提供的getDefaultAdatper可以获得与之对应的BluetoothAdapter对象。
★考核知识点: 数据存储之文件操作
附1.1.20(考核知识点解释)
Android文件存储的4种方式:Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
Context.MODE_WORLD_READABLE
和Context.MODE_WORLD_WRITEABLE
用来控制其他应用是否有权限读写该文件。
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
★考核知识点: Activity启动模式
附1.2.1(考核知识点解释)
共有四种启动模式:standard、singleTop、singleTask、singleInstance。1、standard :系统的默认模式,一次跳转即会生成一个新的实例。假设有一个activity命名为A1,执行语句:
startActivity(new Intent(A1.this, A1.class));
后A1将跳转到另外一个A1,也就是现在的栈里面有 A1的两个实例。按返回键后你会发现仍然是在A1(第一个)里面。
2、singleTop:
singleTop 跟standard 模式比较类似。唯一的区别就是,当跳转的对象是位于栈顶的activity时,程序将不会生成一个新的activity实例,而是直接跳到现存于栈顶的那个activity实例。拿上面的例子来说,当A1 为 singleTop 模式时,执行跳转后栈里面依旧只有一个实例,如果现在按返回键程序将直接退出。
3、singleTask:
singleTask模式和后面的singleInstance模式都是只创建一个实例的。在这种模式下,无论跳转的对象是不是位于栈顶的activity,程序都不会生成一个新的实例。这种模式相当有用,在以后的多activity开发中, 经常会因为跳转的关系导致同个页面生成多个实例,这个在用户体验上始终有点不好,而如果你将对应的activity声明为 singleTask 模式,这种问题将不复存在。
4、singleInstance:
设置为 singleInstance 模式的 activity 将独占一个task(task可以理解为进程),独占一个task的activity与其说是activity,倒不如说是一个应用,这个应用与其他activity是独立的,它有自己的上下文activity。
★考核知识点: ContentProvider继承实现
附1.2.2(考核知识点解释)
ContentProvider提供了不同应用程序间的数据共享方法,那么继承ContentProvider类需要实现其增删改查四个接口。
★考核知识点: 数据存储之XML文件解析
附1.2.3(考核知识点解释)
在Android中,系统提供了DOM、SAX以及XmlPull等方法。DOM每次解析均将文件完全调入内存,SAX是事先调用部分到内存。
★考核知识点: 数据交互格式
附1.2.4(考核知识点解释)
手机与Web领域交互,数据一般组织为XML格式或JSON格式,这两种方式分别完成了由对象到字符串的双向传递和改变。HTML是静态标记语言,AJAX用于JS网站前端交互。因此选择AC。
★考核知识点: 菜单组件属性与方法
附1.2.5(考核知识点解释)
在Android中使用Menu就要重写方法onCreateOptionMenu,当实现菜单中的元素响应事件时,可能需要重写onOptionItemSelected。因此选择AB。
★考核知识点: SQLite数据库存储与访问
附1.2.6(考核知识点解释)
在Android中使用SQLite数据库时往往通过SQLiteOpenHelper这个类作为辅助类完成相应操作,在该类中提供了两种方法可供生成并打开数据库,即为BC。
★考核知识点: 广播作用与机制
附1.2.7(考核知识点解释)
在Android中广播的作用是启动相应的广播事件接收器所响应的Service或Activity。修改用户界面只能由主线程操作。因此选择AB.
★考核知识点: 手机服务与权限
附1.2.8(考核知识点解释)
在Android中,播放mp3文件不需要额外声明权限,读SD卡状态同样不需要。
当读短信时,需要声明
<uses-permission android:name="android.permission.READ_SMS">
当访问蓝牙时需要声明
<uses-permission android:name="android.permission.BLUETOOTH" />
★考核知识点: 动画基本知识
在Android系统中,动画分为两种,分别为补间动画(渐变动画)和帧动画。其中,补间动画又分为四大类,移动、缩放、旋转、透明,分别是Animation类的子类。因此,选择AD。
★考核知识点: 消息机制与通信
附1.3.1(考核知识点解释)
程序启动后,系统会自动建立MessageQueue用于维护主线程UIThread。
★考核知识点: 对话框
附1.3.2(考核知识点解释)
Android系统中输入日期的选择对话框组件DatePickerDialog,时间对话框是TimerPickerDialog。
★考核知识点: 消息机制与通信
附1.3.3(考核知识点解释)
NotificationManager是系统的一个服务,清除消息应该使用的方法是cancel方法。
★考核知识点: MediaPlayer播放方法
附1.3.4(考核知识点解释)
MediaPlayer在播放MP3文件时,会先调用setDataSource方法创建文件源。
★考核知识点: Android系统体系结构划分
附1.3.5(考核知识点解释)
MediaPlayer在播放MP3文件时,会先调用setDataSource方法创建文件源。
★考核知识点: 列表及适配器
附1.3.6(考核知识点解释)
ListView是界面控制组件,可通过适配器建立起数据到达控件的映射,simpleAdapter不仅能够在ListView中使用,也可以使用其他类型的适配器。
★考核知识点: ZoomControls类常用方法
附1.3.7(考核知识点解释)
ZoomControls提供了setOnZoomOutClickListener和setOnZoomInClickListener对应的是配置缩小按钮,还是配置放大按钮。
★考核知识点: 数据库Cursor类常用方法
附1.3.8(考核知识点解释)
数据库的Cursor如果未关闭,那么存在内存泄露的隐患,所以在使用cursor过后一定要关闭。
★考核知识点: MediaPlayer类常用方法
附1.3.9(考核知识点解释)
MediaPlayer会调用prepare方法,create方法只是创建了一个MediaPlayer的实例,真正的播放还是start函数方法。
★考核知识点: 广播接收器配置方法
附1.3.10(考核知识点解释)
广播接收器可在配置文件中注册,也可以采用在java代码中进行手工注册。
★考核知识点: Service启动方式
附1.3.11(考核知识点解释)
当Service启动过后,Android系统不再为该服务调用onCreate函数,即不重复创建。
★考核知识点: Intent作用法
附1.3.12(考核知识点解释)
四大组件分别为Activity、Service、Broadcast Receiver和ContentProvider,Intent是连接四大组件的纽带。
★考核知识点: Android应用程序架构
附1.3.13(考核知识点解释)
gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。 这个文件由Android开发工具自动产生的。Android开发工具会自动根据放入res目录的资源,同步更新修改R.java文件。正因为R.java文件是由开发工具自动生成的,所以应避免手工修改R.java。R.java在应用中起到了字典的作用,它包含了各种资源的id,通过R.java,应用可以很方便地找到对应资源。另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。
★考核知识点: Android系统体系结构层次划分
附1.3.14(考核知识点解释)
Andorid体系结构从下至上依次划分为:Linux Kernel、Lib & Run time、Framework、Application。
★考核知识点: 利用Intent启动Activity的方法
附2.1.1(考核知识点解释)
启动Activity常用方法为startActivity和startActivityForResult。两种方式的区别在于1、startActivity( ) 仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivity( )。2、startActivityForResult( ) 可以一次性完成这项任务,当程序执行到这段代码的时候,假若从T1Activity跳转到下一个Text2Activity,而当这个Text2Activity调用了finish()方法以后,程序会自动跳转回T1Activity,并调用前一个T1Activity中的onActivityResult( )方法。
★考核知识点: 广播基础知识
附2.1.2(考核知识点解释)
从实现原理看上,Android中的广播使用了观察者模式,基于消息的发布/订阅事件模型。因此,从实现的角度来看,Android中的广播将广播的发送者和接受者极大程度上解耦,使得系统能够方便集成,更易扩展。具体实现流程要点粗略概括如下:1.广播接收者BroadcastReceiver通过Binder机制向AMS(Activity Manager Service)进行注册;2.广播发送者通过binder机制向AMS发送广播;3.AMS查找符合相应条件(IntentFilter/Permission等)的BroadcastReceiver,将广播发送到BroadcastReceiver(一般情况下是Activity)相应的消息循环队列中;4.消息循环执行拿到此广播,回调BroadcastReceiver中的onReceive()方法。
无序广播:通过Context.sendBroadcast()方法来发送,它是完全异步的。
所有的receivers(接收器)的执行顺序不确定,因此所有的receivers(接收器)接收broadcast的顺序不确定。这种方式效率更高,但是BroadcastReceiver无法使用setResult系列、getResult系列及abort(中止)系列API
有序广播:是通过Context.sendOrderedBroadcast来发送,所有的receiver依次执行。BroadcastReceiver可以使用setResult系列函数来结果传给下一个BroadcastReceiver,通过getResult系列函数来取得上个BroadcastReceiver返回的结果,并可以abort系列函数来让系统丢弃该广播,使用该广播不再传送到别的BroadcastReceiver。可以通过在intent-filter中设置android:priority属性来设置receiver的优先级,优先级相同的receiver其执行顺序不确定。如果BroadcastReceiver是代码中注册的话,且其intent-filter拥有相同android:priority属性的话,先注册的将先收到广播。有序广播,即从优先级别最高的广播接收器开始接收,接收完了如果没有丢弃,就下传给下一个次高优先级别的广播接收器进行处理,依次类推,直到最后。如果多个应用程序设置的优先级别相同,则谁先注册的广播,谁就可以优先接收到广播。
★考核知识点: 广播基础知识
附2.1.3(考核知识点解释)
Android中常见的布局管理器方式有四种,分别是LinearLayout、FrameLayout、_ RelativeLayout _、TableLayout。还有一种AbsoluteLayout,但一般在实际应用中不使用,因其自身对适配性支持度不够。
★考核知识点: Andorid应用程序架构及工程目录分析
附2.1.4(考核知识点解释)
Assets目录的作用是:该目录下的文件资源不会被编译,而是被原封不动打包到apk中。
★考核知识点: Service启动顺序
附2.1.5(考核知识点解释)
Android中启动服务的方式由两种,分别为startService和bindService,通过startService启动服务时系统先调用服务的onCreate然后调用onStart方法。当服务创建后,再次通过startService后,不会再次调用onCreate。
★考核知识点: Intent携带数据类型
附2.1.6(考核知识点解释)
Intent的作用是连接四大组件,通过Intent可以传递数据,类型有七种,分别是Action、Type、Data、Extras、Category、Component、Flag。
★考核知识点: 传感器的使用
附2.1.7(考核知识点解释)
在Android系统中,使用传感器或获取传感器数据、操作传感器等需要通过传感器对象获得,如使用Wifi传感器时,通过WifiManager获取对象。所以在Android中注册传感器需要先获取对象SensorManager。
★考核知识点: Web Service使用方法
附2.1.8(考核知识点解释)
SOAP是简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。
SOAP、WSDL(WebServicesDescriptionLanguage)、UDDI(UniversalDescriptionDiscovery andIntegration)之一, soap用来描述传递信息的格式, WSDL 用来描述如何访问具体的接口, uddi用来管理,分发,查询webService 。具体实现可以搜索 Web Services简单实例 ; SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。SOAP使用基于XML的数据结构和超文本传输协议(HTTP)的组合定义了一个标准的方法来使用Internet上各种不同操作环境中的分布式对象。
★考核知识点: 系统服务的获取方法
附2.1.9(考核知识点解释)
通过getSystemService方法可以获取对应服务的要操作的系统传感器管理对象,比如要想获取Wifi服务则要先获取WifiManger对象进而管理和操作Wifi设备或模块。
★考核知识点: 布局管理器的特点
附2.1.10(考核知识点解释)
Android系统中布局管理器的宽度和高度是必须指定的,且Android提供了三种设置属性分别是match_parent、wrap_content、fill_parent。程序员也可自定义布局管理器及控件的宽度和高度值。
★考核知识点: Intent意图的作用
附2.1.11(考核知识点解释)
Intent 是及时启动,intent 随所在的activity 消失而消失。 PendingIntent 可以看作是对intent的包装,通常通过getActivity,getBroadcast ,getService来得到pendingintent的实例,当前activity并不能马上启动它所包含的intent,而是在外部执行 pendingintent时,调用intent的。正由于pendingintent中 保存有当前App的Context,使它赋予外部App一种能力,使得外部App可以如同当前App一样的执行pendingintent里的 Intent, 就算在执行时当前App已经不存在了,也能通过存在pendingintent里的Context照样执行Intent。
★考核知识点: TextView文本组件字体显示属性及屏幕适配原则
附2.1.12(考核知识点解释)
根据Android的解释:
dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。 px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。 pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用; sp: scaled pixels(放大像素). 主要用于字体显示best for textsize
★考核知识点: 控件及布局管理器的界面显示方法
附2.1.13(考核知识点解释)
通过setContentView可以指定Activity加载哪个具体布局文件,具体使用形式为setContentView(R.layout.名称)
★考核知识点: ContentValue类用法
附2.1.14(考核知识点解释)
ContentValue类与哈希表类类似,存储的是名-值对,即(key,value)对,其中key部分的类型需是String类型,即字符串类型。
★考核知识点: AndroidManifest.xml文件描述
附2.1.15(考核知识点解释)
在Android中,AndroidManifest.xml起到对整个程序的项目工程整体描述的作用,在其中规定了用户权限、用户特征、版本编号、版本描述、SDK支持、Activity、Service、Broadcast receiver等。其中<manifest>标签和<application>标签是必须存在的,且用于描述整个应用程序,因而只出现一次。
★考核知识点: LinearLayout线性布局管理器特征
附2.1.16(考核知识点解释)
无论在哪种布局管理器中,都务必指定其宽度和高度属性,在线性布局管理器中,如果定义其为水平方向布局,则还需指定属性android:orientation="horizontal"。
★考核知识点: Android开发环境配置
附2.1.17(考核知识点解释)
Android程序开发过程中可以使用真机调试也可以使用Android系统提供的虚拟设备环境,即为Android Virtual Devices,缩写即为AVD。
★考核知识点: Activity初步知识
附2.1.18(考核知识点解释)
Android的四大组件由Activity、Broadcast Recevier、Content Provider和Service构成,其中Intent意图起到连接四大组件的作用。
★考核知识点: Web请求与数据交换
附2.1.19(考核知识点解释)
HttpURLConnection由Get和Post两种方式请求数据,当使用Get方式时,需要明确指定方法connection.connect()。
★考核知识点:多媒体组件及技术方法,
附2.2.1:(考核知识点解释)
从文件系统中播放mp3文件并不需要在AndroidManifest.xml中声明特殊权限,其步骤为:
1.实例化一个MediaPlayer
2.调用setDataSource()方法设置播放文件路径
3.调用prepare(),然后调用start()方法播放。
★考核知识点:Activity生命周期、执行顺序及状态,
附2.2.2:(考核知识点解释)
在Activity生命周期中,可能会经历以下四种状态:
1.活动状态:当前的Activity,位于Activity栈顶,用户可见,并可获得焦点。
2.暂停状态:失去焦点的Activity,依然可见,即使在内存低的情况下,也不会被系统杀死。
3.停止状态:该Activity被其他Activity所覆盖,不可见,但是仍然保存所有的状态和信息。当内存低的情况下,它将要被系统杀死。
4.销毁状态:该Activity结束,或Activity所在的Dalvik进程结束
★考核知识点:消息机制与线程通信基本函数,
附2.2.3:(考核知识点解释)
线程同步的关键字标记为Synchronized
线程常用函数方法为:wait()等待、 notify()通知唤醒、 join()加入队列、interrupt()中断当前线程进入挂起状态。
★考核知识点:Android应用程序架构分析
附2.2.4:(考核知识点解释)
不会。因为使用 Android 系统的手机可能采用不同的分辨率,所以在开发的时候会要求有不同分辨率的图片, drawable-hdpi 存高分辨率的 ,drawable-mdpi 存中等分辨率的,drawable-ldpi 存低分辨率的,所以,把相同的图片用图片处理软件处理成不同的分辨率的图片,然后分别保存,也可以在三个目录下保存相同的图片。
★考核知识点:Intent与IntentFilter过滤器作用
附2.2.5:(考核知识点解释)
Activity作用:向用户呈现操作界面,与用户交互
Intent作用:启动另一个Activity,传递数据
IntentFilter作用:可以帮助Activity跨应用调用,可以对Activity进行功能分组。
★考核知识点:Android体系结构层次划分
附2.2.6:(考核知识点解释)
Libraries:即C/C++函数库部分,大多数都是开放源代码的函数库,例如WebKit,该函数库负责Android网页浏览器的运行,例如标准的C函数库Libc、OpenSSL、SQLite等,当然也包括支持游戏开发2D SGL和3D OpenGL | ES,在多媒体方面有MediaFramework框架来支持各种影音和图形文件的播放与显示,例如MPEG4、H.264、MP3、AAC、AMR、JPG和PNG等众多的多媒体文件格式。Android的Runtime负责解释和执行生成的Dalvik格式的字节码。
★考核知识点:Android事件处理接口及作用
附2.2.7:(考核知识点解释)
Android中事件处理的通用步骤及流程是:
(1)将事件监听器注册到事件源
(2)触发事件源上的事件
(3)生成时间对象
(4)触发事件监听器,事件被作为参数传入事件处理器(5)调用事件处理器做出响应
★考核知识点:Android应用程序打包与发布
附2.2.8:(考核知识点解释)
所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序。 Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证。 如果要正式发布一个Android ,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用adt插件或者ant工具生成的调试证书来发布。 数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。
★考核知识点:Intent通信机制深入
附2.2.9:(考核知识点解释)
Inter-Process Communication (IPC)是内部进程通信的简称, 是共享"命名管道"的资源。Android中的IPC机制是为了让Activity和Service之间可以随时的进行交互,故在Android中该机制,只适用于Activity和Service之间的通信,类似于远程方法调用,类似于C/S模式的访问。通过定义AIDL接口文件来定义IPC接口。Server端实现IPC接口,Client端用IPC接口本地代理 。
★考核知识点:Service机制
附2.2.10:(考核知识点解释)
1.Activity是Android应用程序的界面,负责与用户进行交互。
2.Service是Android应用程序的后台线程,没有界面,不与用户交互。
★考核知识点:Activity机制深入
附2.2.11:(考核知识点解释)
Android中默认启动模式为standard,此外还有singleTop、singleTask和singleInstance模式,分别对应在栈中不同的存储方法,singleTop一直处于栈顶,singleTask在栈中只保存一个实例
★考核知识点:Android应用程序架构分析与目录功能
附2.2.12:(考核知识点解释)
R.java文件作用是:
1.R.java文件是Android项目自动生成的终态类。
2.R.java文件除了有自动标识资源的"索引"功能之外,还有另一个主要的功能,当"res"目录中的某个资源在应用中没有被使用到,在该应用被编译的时候,系统就不会把对应的资源编译到该应用的APK包中,这样可以节省Android手机的资源。
3.在"gen/"目录下
★考核知识点:Android虚拟机知识
附2.2.13:(考核知识点解释)
DVM指Dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念。
★考核知识点:Activity生命周期执行顺序
附2.2.14:(考核知识点解释)
结束时:onPause() --> onStop() --> onDestroy()
启动时:onCreate-->onStart()-->onResume()
★考核知识点:Android程序开发简介
附2.2.15:(考核知识点解释)
Android应用基于Java,由于底层是Linux所以底层支持C/C++。目前有两种编程:1.基于ADT的Java编程 2. 基于NDK的C/C++编程
★考核知识点:Content Provider系统常见应用
附2.2.16:(考核知识点解释)
Android原生系统提供了诸多应用,其中很多使用到了Content Provider比如,Browser、Contacts、Settings、Call log、Media Store。
★考核知识点:内存管理垃圾回收
附2.2.17:(考核知识点解释)
GC是Gabage Collection垃圾收集的意思
内存处理是编程人员最容易出现问题的地方,GC可以达到自动处理内存回收垃圾的作用,使程序员不用担心内存管理问题
★考核知识点:Android体系结构分析
附2.2.18:(考核知识点解释)
四个层次,分别是:Linux内核(Linux kernel)、类库(Libraries)和运行环境(Runtime)、应用程序框架层(Application Framework)、应用程序层(Applications)
★考核知识点:SOAP协议特征
附2.2.19:(考核知识点解释)
1.SOAP 与编程语言无关,SOAP 可以使用任何语言来完成。2.SOAP 与厂商无关。3.SOAP 与平台无关4. SOAP 是简单的,可扩展的。
★考核知识点:Android扩展控件的使用
附2.2.20:(考核知识点解释)
选择菜单(Option Menu)、上下文菜单(Context Menu)、子菜单(Sub Menu)
★考核知识点:广播机制
附2.2.21:(考核知识点解释)
第一,广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件。第二,应用程序可以拥有任意数量的广播接收器以对所有它感兴趣的通知信息予以响应。所有的接收器均继承自Broadcast Receiver基类。第三,广播接收器没有用户界面。然而,它们可以启动一个Activity来响应它们收到的信息,或者用NotificationManager来通知用户。
★考核知识点:消息机制与通信
附2.2.22:(考核知识点解释)
Android中提供了消息机制,主要包含Handler、Looper、Message Queue
Andriod提供了 Handler 和 Looper 来满足线程间的通信。Handler 采用先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(Message Exchange)。
Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列)。
Handler: 可以构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;或者接收Looper从Message Queue取出)所送来的消息。
Message Queue(消息队列):用来存放线程放入的消息。
线程:UI thread 通常就是main thread,而Android启动程序时会替它建立一个Message Queue
★考核知识点:数据存储方法
附2.2.23:(考核知识点解释)
Android的数据存储主要有:1.SharedPreference存储、2.File存储、3.SQLite数据库、4.ContentProvider存储、5.SD Card存储和网络存储
★考核知识点:服务启动方式及区别
附2.2.224:(考核知识点解释)
StartService和bindService
区别在于:使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服务仍然运行。使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止。2.采用startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onStart()方法。如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStart()方法。采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法。3.bindService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onBind()方法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind()方法,接着调用onDestroy()方法。如果调用bindService()方法前服务已经被绑定,多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法。
★考核知识点:Android基本控件
附2.2.25:(考核知识点解释)
1、在布局文件中添加<Spinner>标记,并为其指定android:entries属性。
2、编写用于指定列表项的数组资源文件,并将其保存在res/values目录中,在该文件中添加一个字符串组
★考核知识点:Android程序调试
附2.2.26:(考核知识点解释)
Android程序调试中,系统提供了五级方法,分别对应错误、提示、信息、警告、用户自定义debug即:Log.e() Log.v() Log.d() Log.i() Log.w()
★考核知识点:Adapter适配器作用
附2.2.27:(考核知识点解释)
Adapter是连接后端数据和前端显示的适配器接口。常见的Adapter有ArrayAdapter, BaseAdapter, CursorAdapter, ListAdapter, SimpleAdapter, SimpleCursorAdapter, SpinnerAdapter等
★考核知识点:布局管理器界面设计
附2.2.28:(考核知识点解释)
过程性设计:指用代码设计用户界面(通过Java代码实现)
声明性设计:不涉及任何Java代码,通过XML描述符的配置文件来进行配置操作
(三)、程序题填空题
1、 以下程序片段完成自动提示文本组件显示数据功能,请阅读程序并将其补充完整,并填入答题区
★考核知识点:适配器定义及使用、控件查找
public class Demo extends Activity {
private static final String data[] = new String[] { “abc”, “123”, “xyz” };
private AutoCompleteTextView myauto = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line,__①___);// 定义数据集
this.myauto = (AutoCompleteTextView) super.___②___(R.id.myAuto);// 取得组件
// 设置数据集适配器
___③___;
}
}
答案:
①____data___;
②____findViewById_________;
③__this.myauto.setAdatper(adapter)___;
2、列程序片段通过点击按钮实现发送短信的功能,请将下列程序补充完整,并填入答题区。
★考核知识点:手机系统服务调用方法
send_sms_button.setOnClickListener(new View.OnClickListener() {
... ...
String phone_number = phone_number_editText.getText().toString().trim();
String sms_content = sms_content_editText.getText().toString().trim();
if(phone_number.___①___("")) { //手机号码是否为空
Toast.makeText(_MainActivity._②__, “输入号码”, Toast.LENGTH_LONG).show();
} else {
SmsManager smsManager = SmsManager.getDefault();
if(___③____) { //超出字数限制,短信内容拆分
List<String> contents = smsManager.divideMessage(sms_content);
for(String sms : contents) {
smsManager.sendTextMessage(phone_number, null, sms, null, null);
}
} else {
…
}
}
});
答案:
①____equals___; ②____this___;③__sms_content.length() > 70___;
3、下程序通过长按事件响应实现手机桌面图片更改,当长按事件处理完毕后,继续分发该事件,请按提示将程序补充完整,并填入答题区。
★考核知识点:Android事件处理之长按事件响应方法
public class MyLongClickDemo extends Activity {
private ImageView img = null; // 定义图片视图
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main); // 调用布局管理器
this.img = (ImageView) super.___①____(R.id.img); // 取得ImageView
this.img.setOnLongClickListener(new OnLongClickListenerImpl()); // 长按监听
}
private class OnLongClickListenerImpl implements ___②__ {
@Override
public boolean onLongClick(View view) { // 长按事件
try {
MyLongClickDemo.this.clearWallpaper(); // 清除已有的桌面
MyLongClickDemo.this.setWallpaper( MyLongClickDemo.this.img.getResources()
.openRawResource(R.drawable.nankai_bg)); // 设置新的桌面背景
… …
} catch (Exception e) {
… …
}
return ___③___;
} }
}
答案:
①____findViewById___; ②____ OnLongClickListener _________;③__false___;
4、下列程序通过系统默认浏览器打开指定网址的网页,请根据提示将其补充完整,并填入答题区。
★考核知识点:Intent数据与动作传递
public class MyIntentCaseDemo extends Activity {
private Button mybut = null ; // 按钮组件
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main); // 默认布局管理器
this.mybut = (Button) super.findViewById(R.id.mybut) ; // 取得组件
this.mybut.___①____ (new OnClickListenerImpl());// 定义单击事件
}
private class OnClickListenerImpl implements OnClickListener {
@Override
public void onClick(View view) {
Uri uri = _____②___("") ; // 指定数据
Intent it = new Intent() ; // 实例化Intent
it.setAction(ACTION_NEW); // 指定Action
it.setData(__③__) ; // 设置数据
MyIntentCaseDemo.this.startActivity(it); // 启动Activity
}
}
}
答案:
① setOnClickListener; ②____Uri.parse_________;③__uri ___;
5、以下程序是继承SQLiteOpenHelper编写的一个数据库连接类,完成了以下功能创建一个版本为2,名称为“exam.db”的数据库在onCreate方法中创建一张名称为question的表,表中包含以下字段id(主键,数字,自增长),title(文本),answer(文本),请将程序补充完整。
★考核知识点:数据存储之SQLite数据库基本使用方法及相关类与函数
public class DataBaseConnection extends SQLiteOpenHelper {
private static final int DBVERSION = 2;
private static final String DBNAME = "exam.db";
public DataBaseConnection(Context ctx) {
super(ctx, DBNAME, null, DBVERSION);
}
public DataBaseConnection(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase conn) {
String sql = "CREATE TABLE news (" +
"id integer ____①____," +
"title text ," +
"answer text " +
")" ;
___②____
}
@Override
public void onUpgrade(SQLiteDatabase conn, int oldVersion, int newVersion) {
String sql = null;
if (____③____) {
sql = "DROP TABLE news";
conn.execSQL(sql);
}
sql = "CREATE TABLE news (" +
"id integer primary key," +
"title text ," +
"content text ," +
"pub_date text ," +
"type integer ," +
"photo text " +
")" ;
conn.execSQL(sql);
}
}
答案:
①__ primary key_; ②___conn.execSQL(sql);_;③__ oldVersion == 2____;
6、以下程序片段完成界面定时更新功能,请根据提示将其补充完整,并填入答题区。
★考核知识点:消息机制之Hanlder、Message基本使用方法
public class MyMessageDemo extends Activity {
private static int count = 0; // 定义全局变量
public static final int SET = 1 ; // 设置一个what标记
private Handler myHandler = new Handler() { // 定义Handler对象
@Override
public void handleMessage(android.os.Message msg) {// 覆写此方法
// 判断操作类型
switch (___①__) {
case SET: // 为设置文本操作
MyMessageDemo.this.info.setText("nankai - " + count++);
}
}
};
private TextView info = null; // 文本显示组件
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main);
this.info = (TextView) super.___②___(R.id.info);
Timer timer = new Timer(); // 定义调度器
// 立即开始,1秒一增长
timer.___③____(new MyTask(), 0, 1000);
}
private class MyTask extends TimerTask { // 定义定时调度的具体实现类
@Override
public void run() { // 启动线程
Message msg = new Message(); // 定义Message
msg.what = SET ; // 操作为设置显示文字
// 发送消息到子线程
MyMessageDemo.this.myHandler.___④___(msg);
}
}
}
答案:
① findViewById ②____msg.what_________;③__schedule ___ ④ sendMessage
7. Gallery显示图片时,通过自定义适配器完成相应操作,请将自定义适配程序补充完整,并填入答题区。
★考核知识点:网格视图使用方法与适配器定义
public class ImageGalleryAdapter extends BaseAdapter {
private Context myContext; // Context对象
private int imgRes[] = new int[] { R.drawable.ispic_a, R.drawable.ispic_b,
R.drawable.ispic_c, R.drawable.ispic_d, R.drawable.ispic_e };
public ImageGalleryAdapter(Context c) { // 接收Context
this.myContext = c;
}
@Override
public int getCount() { // 返回图片个数
return ___①_____
}
@Override
public Object getItem(int position) { // 取得指定位置的图片
return ___②____;
}
… …
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView img = new ImageView(③);
img.setBackgroundColor(0xFFFFFFFF);
img.setImageResource(this.imgRes[position]); // 给ImageView设置对应位置的资源
img.setScaleType(ImageView.ScaleType.___④__); // 居中显示
img.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));// 布局参数
return img;
}
}
答案:
①__ this.imgRes.length; __; ②__this.imgRes[position]_;③_this.myContext ④CENTER
8、请将下列标签程序补充完整。
★考核知识点:标签组件与标签Activity类方法
public class MyTabHost extends Activity {
private TabHost myTabHost; // 定义TabHost
private int[] layRes = { R.id.tab_edit, R.id.tab_clock
, R.id.tab_sex }; // 定义内嵌布局管理器ID
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.tab) ; // 调用默认布局管理器
this.myTabHost = (TabHost) super.____①__(R.id.tabhost); // 取得TabHost对象
// 建立TabHost对象
this.myTabHost.setup() ;
for (int i = 0; i < this.layRes.length; i++) { // 循环取出所有布局标记
// 为标签创建ID
TabSpec myTab = myTabHost. newTabSpec("tab" +i);
myTab.setIndicator("标签 - " +i) ; // 设置标签文字
myTab.____②___ (this.layRes[i]) ; // 设置显示的组件
// 增加标签
this.myTabHost.___③____ ;
}
this.myTabHost.setCurrentTab(0) ; // 设置开始索引
}
}
答案:
①__findViewById__; ②__ setContent _;③addTab(myTab)
9、用复选框在对话框中显示信息列表,阅读以下程序,将其补充完整,并填入答题区。
★考核知识点:Androd扩展控件之对话框、复选框结合
private class OnClickListenerImpl implements OnClickListener {
@Override
public void onClick(View v) {
Dialog dialog = new AlertDialog.Builder(MainActivity.this) // 实例化对象
.setIcon(R.drawable.pic_m) // 设置显示图片
.setTitle("请选择?") // 设置显示标题
.____①____("确定", // 增加一个确定按钮
new DialogInterface.OnClickListener() { // 设置操作监听
public void onClick(DialogInterface dialog,
int whichButton) { // 单击事件
}})
.setNegativeButton("取消", // 增加取消按钮
new DialogInterface.OnClickListener() { // 设置操作监听
public void onClick(DialogInterface dialog,
int whichButton) { // 单击事件
}})
.___②___( MainActivity.this.fruitData,// 设置列表选项
MainActivity.this.chData,// 第一个选项默认选中
new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog,
int which, boolean isChecked) { // 设置显示信息
for (int i = 0; i < fruitData.length; i++) {
if (i == which && isChecked) {// 被选中
mych.append(fruitData[i] + "、");
} }
}})._______; // 创建Dialog
dialog.show(); // 显示对话框
}} // 单击事件
}
答案:
①_ setPositiveButton _ _; ②setMultiChoiceItems;③create()
南开19秋《手机应用软件设计与实现》课程期末复习资料历年参考题目如下: