广东海洋大学《移动编程》复习试题.docx
《广东海洋大学《移动编程》复习试题.docx》由会员分享,可在线阅读,更多相关《广东海洋大学《移动编程》复习试题.docx(11页珍藏版)》请在冰豆网上搜索。
![广东海洋大学《移动编程》复习试题.docx](https://file1.bdocx.com/fileroot1/2023-2/4/64b0f263-0a46-48dd-becc-d832f0ec5c4f/64b0f263-0a46-48dd-becc-d832f0ec5c4f1.gif)
广东海洋大学《移动编程》复习试题
2017广东海洋大学《移动编程》复习提纲
注:
还有一些选择判断填空的小细节自己复习,红色字体的为重点复习内容。
记住一句话就能(高分)过:
一定按照老师最后复习说的内容进行逐点复习。
题型:
选择+填空+判断=65分程序填空+编程=35分
1.Android体系结构(各控件的作用)(判断题:
安卓有自己的运行时和内存管理机制(√))
安卓基于Linux内核,采用软件堆层,分四层,
第一层:
Linux内核,提供由操作系统内核管理的底层基础功能,如:
安全机制、内存管理、进程管理、电源驱动等
第二层:
中间件层,有函数库和Android运行时构成,如:
运行时(核心库和ART虚拟机)、函数库(SurfaceManager、SQLite等)
第三层:
应用程序框架,提供了Android平台基本的管理功能和组件重用机制,如:
ActivityManager、WindowManager、ContentProviders。
第四层:
应用程序层,如:
邮件客户端、通讯录。
SDK提供开发所必备的调试、打包和仿真工具和详细的说明文档以及开发示例。
Add-one目录存放Google提供的地图开发包,docs目录是帮助文档,extras\Google目录保存Android手机的USB驱动程序。
Platforms存放sdk和avd管理器下载的各种版本的SDK,Platform-tools保存了与平台调试相关的工具。
2.开发工具(各开发工具的作用)
1.Android模拟器:
SDK中最重要的工具,允许程序开发者在没有物理设备的情况,在计算机上对Android程序进行开发、调试和仿真。
2.Android调试桥(ADB):
用于连接Android设备或模拟器的工具,负责将应用程序安装带模拟器和设备中,或从模拟器或设备中传输文件。
3.DDMS(dalvikdebugmonitorservice):
系统中内置的调试工具,可以用来监视Android系统中进程、堆栈信息,查看logcat日志等。
其中,设备管理器用于监控多个Android模拟器,显示其正在运行的所有进程。
模拟器控制器用于控制模拟器网络速度和延时等。
文件浏览器可以对Android内置存储器上的文件进行上传下载等操作。
日志浏览器(logcat)可以浏览系统或者应用程序产生的日志信息。
(设置日志点,五种分类)
3.四大组件包括Activity、Service、Broadcastreceiver、Contentprovider。
Activity是程序的呈现层,显示可视化的用户界面,并接受用户交互所产生的界面事件。
Service一般用于没有用户界面,但需要长时间在后台运行的应用。
如MP3
Broadcastreceiver是用来接收并响应广播消息的组件。
如时区变更,电量不足等。
Contentprovider是Android系统提供的一种标准的共享数据的机制,应用程序可以通过contentprovider访问其他应用程序的私有数据。
全生命周期:
始于onCreate,终于onDestroy
可视生命周期:
始于onStart,终于onStop
活动生命周期:
始于onResume,终于onPause
Activity重新获得焦点
如果Activity重新获得焦点,会依次执行3个事件回调函数:
onRestart→onStart→onResume
启动Activity
在这个阶段依次执行3个事件回调函数:
onCreate→onStart→onResume
单选按钮RadioButton;复选按钮CheckBox
4.定制用户界面控件相应的响应事件。
View.OnClickListener/CheckBox.OnClicklistener/RadioButton.OnClicklistenerxxx=newxx.OnClickListener(){
PublicvoidonClick(Viewv){}
相对布局能够最大程度保证在不同分辨率的设备上正确显示界面布局
用XML使用选项菜单和子菜单(程序填空题,除了下面的,还有线性布局,相对布局都挖了空,参考课本P106(第六行等),P112(第20行等)或课件相关内容。
)
publicclassOptionMenuActivityextendsActivity{
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);//考试中main被替换成具体的文件。
publicbooleanonCreateOptionsMenu(Menumenu){
MenuInflaterinflater=getMenuInflater();
inflater.inflate(R.menu.main_menu,menu);
returntrue;
快捷菜单(Activity栈和fragment回退栈):
(选择题也考到Fragment重载的三个回调函数onCreate(),onCreateView(),onPause())
为LabelView元素注册快捷菜单registerForContextMenu(LabelView);
初始化快捷菜单
publicvoidonCreateContextMenu(ContextMenumenu,Viewv,ContextMenuInfomenuInfo){
点击事件的响应publicbooleanonContextItemSelected(MenuItemitem){
菜单项点击事件publicbooleanonOptionsItemSelected(MenuItemitem){
5.SP的特点(名/值对)(考试中,要选一个说法错误的,答案好像是配置文件只能是XML那个选项。
应该还可以是INI等。
),支持的访问模式:
SP不仅能保存数据,还能够实现不同程序间的数据共享。
SP支持各种基本数据类型
缺点
尽管SP使用安卓的文件系统进行数据的存取,但数据文件只能保存在设备的内部存储器中的一个固定的私有目录中,不能指定其保存路径。
一个关键字只能保存一项数据,数据的存储能力有限。
无法直接存储复杂的数据类型
若要采用SharedPreferences存储复杂类型的数据,则需要先对数据进行编码(如,Base64编码),再将编码后的数据以字符串的形式保存在SharedPreferences数据文件中
访问模式(填空题,两个空,好像是全局读,全局写):
私有(MODE_PRIVATE):
缺省模式,数据文件仅能够被创建数据文件的应用程序,或具有相同UID的其它应用程序进行读取和写入
在私有模式下,写入的数据会覆盖掉文件中原有的数据
全局读(MODE_WORLD_READABLE):
不仅创建数据文件的应用程序或具有相同UID的应用程序可以对其进行读取或写入,其它应用程序也具有读取操作的权限
全局写(MODE_WORLD_WRITEABLE):
不仅创建数据文件的应用程序或具有相同UID的应用程序可以对其进行读取或写入,其它应用程序也具有写入操作的权限
在全局写模式下,写入的数据会覆盖掉文件中原有的数据
2、如何对SP的文件进行访问,SP的文件保存位置和保存格式
SharedPreferences以XML格式的文件保存所产生的数据
在实际应用中,SharedPreferences将数据文件保存在设备的内部存储器的一个私有目录中,如下所示目录:
data\data\\shared_prefs
3、SP访问数据的4个步骤:
定义SharedPreferences的访问模式
publicstaticintMODE=Context.MODE_WORLD_READABLE
+Context.MODE_WORLD_WRITEABLE
定义SharedPreferences的名称,即保存在Android文件系统中的SharedPreferences数据文件(XML文件)的名称
publicstaticfinalStringPREFERENCE_NAME="SaveSetting";
注意:
由于SharedPreferences数据文件只能以XML文件格式存储在手机内存中的固定目录下,因此,所定义的文件名不能包含路径,也不用指定文件的后缀名
使用Activity类的getSharedPreferences()API获取一个SharedPreferences实例
SharedPreferencesSP=getSharedPreferences(PREFERENCE_NAME,MODE);
对SharedPreferences中的数据进行读写操作
写数据
1SharedPreferencesSP=getSharedPreferences(PREFERENCE_NAME,MODE);
2SharedPreferences.Editoreditor=SP.edit();
3editor.putString("Name","Tom");
4editor.putInt("Age",20);
5editor.putFloat("Height",1.81f);
6mit();
读数据:
1SharedPreferencesSP=getSharedPreferences(PREFERENCE_NAME,MODE);
2Stringname=SP.getString("Name","DefaultName");
3intage=SP.getInt("Age",20);
4floatheight=SP.getFloat(“Height”,1.81f);
6.文件存储(判断题)
(1、内部存储与外部存储的相同点与不同点。
内部存储器空间有限,仅能保存小尺寸的文件,且仅能将文件存储在存储器的固定目录中,但支持文件的访问模式和权限控制的设置(使用Linux文件系统的缘故)
外部存储器空间较大,适用于保存大尺寸的文件,且文件能够存储在存储器的任意目录中,但不支持文件的访问模式和权限控制的设置(使用FAT文件系统的缘故)
2、对内部存储与外部储存文件进行访问的方式
在外部存储器SD卡上读写数据的步骤与读写内部存储器数据的步骤基本一致,但需要具备以下2项前提
因为SD卡可以随意加载或卸载,所以在编程访问SD卡前需要检测SD卡或者SD卡映射目录(如/sdcard或/mnt/sdcard)的可用性
在运行程序之前,需要在AndroidManifest.xml中注册2个用户权限,即在根标签下添加2项子标签
name="android.permission.MOUNT_UNMOUNT_"/>
name="android.permission.WRITE_EXTERNAL_STORAGE"/>
外部存储-写入数据部分代码:
OnClickListenerwriteButtonListener=newOnClickListener(){
@Override
publicvoidonClick(Viewv){
String="SdcardFile-"+System.currentTimeMillis()+".txt";
=newFile("/sdcard/");
if(dir.exists()&&dir.canWrite()){
=new()+"/"+);
fos=null;
try{
new();
if(new()&&new()){
fos=new(newFile);
fos.write(randomNumbersString.getBytes());
TextViewlabelView=(TextView)findViewById(R.id.label);
labelView.setText(+"文件写入SD卡");
}
}catch(IOExceptione){
e.printStackTrace();
}finally{
if(fos!
=null){
try{
fos.flush();
fos.close();
}
catch(IOExceptione){}
)
7.数据库存储(1、如何对数据库进行管理和访问2、代码建库3种类的作用)
对数据库进行管理和访问(参考以前学过的oracle数据库)
SQLiteDatabase类:
位于android.database.sqlite包中,是管理和操作SQLite数据库的核心类,封装了几乎所有数据库操作的API(如:
数据的添加、查询、更新、删除等)
DBOpenHelper:
为DBAdapter类内部自定义的子类,继承于SQLiteOpenHelper帮助类,用于辅助建立、更新和打开数据库
Context类:
一个描述应用程序环境(即上下文)的全局性信息的抽象
Android系统提供了该抽象类的具体实现类
通过Context可以访问应用程序中的资源和类,以及执行应用程序级别的操作,例如:
启动Activity、发送广播、接受Intent信息等
publicclassDBAdapter{
privatestaticfinalStringDB_NAME=“people.db”;//数据库名称
privatestaticfinalStringDB_TABLE=“peopleinfo”;//数据表名称
privatestaticfinalintDB_VERSION=1;//数据库版本号
publicstaticfinalStringKEY_ID=“_id”;//数据表的主键字段名称
publicstaticfinalStringKEY_NAME=“name”;//数据表的数据字段名称
publicstaticfinalStringKEY_AGE="age";//数据表的数据字段名称
publicstaticfinalStringKEY_HEIGHT="height";//数据表的数据字段名称
privateSQLiteDatabasedb;
privatefinalContextcontext;
privateDBOpenHelperdbOpenHelper;
privatestaticclassDBOpenHelperextendsSQLiteOpenHelper{
PublicDBOpenHelper(Contextcontext,Stringname,CursorFactoryfactory,intversion){
Super(context,name,factory,version);
}
PrivatestaticfinalStringDB_CREATE=“createtable”+DB_TABLE+“(”+KEY_ID+”integerprimarykeyautoincrement,”+KEY_NAME+”textnotnull,”+KEY_AGE+”integer,”+KEY_HEIGHT+”float);”;
@Override
PublicvoidonCreate(SQLiteDatabase_db){
_db.execSQL(DB_CREATE);}
@Override
PublicvoidonUpgrade(SQLitedatabase_db,int_oldVersion,int_newVersion){_db.execSQL(“DROPTABLEIFEXISTS”+DB_TABLE);
OnCreate(_db);}
}
publicDBAdapter(Context_context){
context=_context;
}
publicvoidopen()throwsSQLiteException{
dbOpenHelper=newDBOpenHelper(context,DB_NAME,null,DB_VERSION);
try{
db=dbOpenHelper.getWritableDatabase();
}catch(SQLiteExceptionex){
db=dbOpenHelper.getReadableDatabase();
}
}
publicvoidclose(){
if(db!
=null){
db.close();db=null;
}
}
}
最后一题编程代码建库P215起参考最后一个实验相关代码也靠谱(1创建数据库2创建表3对表进行增删查改)
(1)创建名为xxx的数据库
(2)创建student表
(3)向student表中插入对应表格里的数据
(4)更新数据库等等
未完待续。
。
。