Android程序设计练习卷答案.docx
- 文档编号:28153751
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:16
- 大小:20.75KB
Android程序设计练习卷答案.docx
《Android程序设计练习卷答案.docx》由会员分享,可在线阅读,更多相关《Android程序设计练习卷答案.docx(16页珍藏版)》请在冰豆网上搜索。
Android程序设计练习卷答案
1.在android程序中,()用于输出什么级别的日志信息(A)
A、调试B、信息C、警告D、错误
2.以下情况不会创建Context对象的是(C)
A.创建Application对象时B.创建Service对象时
C.创建ContentProvider对象时D.创建Activity对象时
]
3.下列不属于Android中广播中的类别的是(D)
BroadcasBroadcastBroadcastbroadcast
4.以下哪个不是Intent的Activity启动方式(A)
5.安卓文件的子节点不包括(C)
&
6.下面那个不是Fragment的生命周期方法(D)
A.onStartB.onAttachC.onDestoryViewD.onRestart
7.下面那种不是安卓原生支持的Menu(A)
MenuMenuMenu
(
8.下面不属于android的动画分类的有(D)
A、TweenB、FrameC、PropertyD、Animation
9.下列哪个不是安卓service自带的方法(A)
A.OnResume
10.下列属于SAX解析xml文件的优点的是(B)
@
A、将整个文档树在内存中,便于操作,支持删除,修改,重新排列等多种功能
B、不用事先调入整个文档,占用资源少
C、整个文档调入内存,浪费时间和空间
D、不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会消失
11.下列关于Soundpool和MediaPlayer的说法,错误的是(A)
支持多个音乐同时播放
资源占用率高
{
延迟时间较长
MediaPlayer()后要调用prepare()方法才能播放
12.关于res/raw目录说法正确的是(A)
A、这里的文件是原封不动的存储到设备上不会转换为二进制的格式
B、这里的文件是原封不动的存储到设备上会转换为二进制的格式
C、这里的文件最终以二进制的格式存储到指定的包中
!
D、这里的文件最终不会以二进制的格式存储到指定的包中
13.下面异常不属于RuntimeException的是(D)
A、ArithmeticException
B、IllegalArgumentException
C、NullPointerException
D、IOException
[
14.以下方法那个不能实现不显示android标题栏(B)
A.在Activity的Oncreate方法中写,;
B.设置布局Layout上移一定单位dp
C.在manifest设置Activity的节点android:
theme="@android:
style/"
D.在style中定义 windowNoTitle">true后在manifest中引用 15.下列对androidNDK的理解正确的是(D) & A、NDK是一系列工具的集合 B、NDK提供了一份稳定、功能有限的API头文件声明。 C、使“Java+C”的开发方式终于转正,成为官方支持的开发方式 D、ABC都是 16.以下关于安卓的国际化的说法正确的是(B) 】 A.安卓国际化就是将app上架到各国的安卓应用商店 B.安卓国际化就是将安卓app相关显示数据设置不同语言版本 C.安卓国际化就是将安卓操作系统进行定制 D.安卓国际化就是将安卓app适配各国际品牌手机 项目工程下面的assets目录的作用是什么(B) # A、放置应用到的图片资源。 B、主要放置多媒体等数据文件 C、放置字符串,颜色,数组等常量数据 D、放置一些与UI相应的布局文件,都是xml文件 18.下面关于Androiddvm的进程和Linux的进程,应用程序的进程说法正确的是(D) A、] B、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念. B、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux中的一个进程,所以说不是一个概念. C、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux中的一个进程,所以说不是一个概念. D、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念. { 19.在android中使用Menu时可能需要重写的方法有(D)。 A、onCreateOptionsMenu() B、onCreateMenu() C、onOptionsItemSelected() D、A和C 20.对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行(D) A、onPause()B、onCreate()C、onResume()D、onStart() — 中下列属于Intent的作用的是(C) A、实现应用程序间的数据共享 B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失 C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带 D、处理一个应用程序整体性的工作 22.下面的对自定style的方式正确的是(A) ; A、 layout_width">fill_parent B、 layout_width">fill_parent ' C、 layout_width">fill_parent D、 layout_width">fill_parent 23.android关于service生命周期的onCreate()和onStart()说法正确的是(D) A、{ B、当第一次启动的时候先调用onStart()方法 B、当第一次启动的时候只会调用onCreate()方法 C、如果service已经启动,将先后调用onCreate()和onStart()方法 D、如果service已经启动,只会执行onStart()方法,不在执行onCreate()方法 24.下面退出Activity错误的方法是(C) A、finish()B、抛异常强制退出C、()D、onStop() ; 25.我们都知道Hanlder是线程与Activity通信的桥梁,如果线程处理不当,你的机器就会变得越慢,那么线程销毁的方法是(A) A、onDestroy()B、onClear()C、onFinish()D、onStop() 26.下列关于Android的Asset目录下的文件说法不正确的是(D) A.不能通过R文件直接访问Asset目录资源 目录可以新建文件夹 目录一般存放一些二进制文件 D.通过AssetManager提供的方法可以修改里面的文件 ] 27.以下对Activity的生命周期方法描述错误的是(A) A.onResume阶段,用户不能与Activity交互 B.Onstop阶段,原Activity变得不可见,被下一个activity覆盖了 C.onDestory阶段,这是activity被干掉前最后一个被调用方法 D.onPause阶段,到这一步是可见但不可交互的 B、 ^ 28.关于ContenValues类说法正确的是(A) A、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是String类型,而值都是基本类型 B、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是任意类型,而值都是基本类型 C、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名,可以为空,而值都是String类型 D、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是String类型,而值也是String类型 — 29.在android中使用SQLiteOpenHelper这个辅助类时,可以生成一个数据库,并可以对数据库版本进行管理的方法可以是(B) A、getWriteDatabase() B、getReadableDatabase() C、getDatabase() D、getAbleDatabase() @ 30.下面在文件中注册BroadcastReceiver方式正确的(A) A、 name="NewBroad"> android: name=""/> * B、 name="NewBroad"> android: name=""/> C、 name="NewBroad"> android: name=""/> % D、 name="NewBroad"> android: name=""/> } 2.简答题 1.简述apk安装卸载的原理。 APK安装可以通过以下四种方式: 1.系统应用安装,开机时完成系统应用的检查,没安装就安装,安装就跳过,无安装界面。 2.网络下载应用安装,通过market应用完成,无安装界面。 $ 3.ADB工具安装,无安装界面 4.通过SD卡来安装apk,有安装界面,由应用处理安装及卸载过程的界面。 应用安装涉及到如下几个目录: system/app系统自带的应用程序,无法删除 data/app用户程序安装的目录,有删除权限 data/data存放应用程序的数据 Data/dalvik-cache将apk中的dex文件安装到dalvik-cache目录下 | (dex文件是dalvik虚拟机的可执行文件,其大小约为原始apk文件大小的四分之一) 安装过程: 复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录。 卸载过程: 删除安装过程中在上述三个目录下创建的文件及目录。 2.简述Android应用程序结构是哪些 ' Android应用程序结构是: LinuxKernel(Linux内核)、Libraries(系统运行库或者是c/c++核心库)、Application Framework(开发框架包)、Applications(核心应用程序) 3.安卓如何做屏幕适配 1)android有H、L、M、X、XX四个不同的文件夹存放不同分辨率的图片,系统会自动加载 2)偏移量d的设置可以在values-hpdi,values-mdpi,values-ldpi三种文件夹中的文件进行设置 $ 4.如何将一个Activity设置成窗口的样式。 在中定义Activity的地方一句话android: theme="@android: style/"或android: theme="@android: style/"就变成半透明的 5.在多线程编程这块,我们经常要使用Handler,Thread和Runnable这三个类,请简述他们之间的关系。 Android的CPU分配的最小单元是线程,Handler一般是在某个线程里创建的,因而Handler和Thread就是相互绑定的,一一对应。 而Runnable是一个接口,Thread是Runnable的子类。 所以说,他俩都算一个进程。 HandlerThread顾名思义就是可以处理消息循环的线程,他是一个拥有Looper的线程,可以处理消息循环。 与其说Handler和一个线程绑定,不如说Handler是和Looper一一对应的。 最后需要说明的是,在UI线程(主线程)中: mHandler=newHandler(); (newRunnable(){ voidrun(){ : .} }); 这个线程其实是在UI线程之内运行的,并没有新建线程。 常见的新建线程的方法是: Threadthread=newThread(); (); ; HandlerThreadthread=newHandlerThread("string"); (); 的全称是什么如何工作能处理哪些类型的数据 AIDL的英文全称是AndroidInterfaceDefineLanguage 当A进程要去调用B进程中的service时,并实现通信,我们通常都是通过AIDL来操作的 A工程: 首先我们在包中创建一个文件,在里面我们自定义一个接口,含有方法get。 ADT插件会在gen目录下自动生成一个文件,该类中含有一个名为的内部类,该内部类中含有aidl文件接口的get方法。 % 说明一: aidl文件的位置不固定,可以任意 然后定义自己的MyService类,在MyService类中自定义一个内部类去继承这个内部类,实现get方法。 在onBind方法中返回这个内部类的对象,系统会自动将这个对象封装成IBinder对象,传递给他的调用者。 其次需要在文件中配置MyService类,代码如下: --注册服务--> name=".MyService"> --指定调用AIDL服务的ID--> name=""/> ! 为什么要指定调用AIDL服务的ID,就是要告诉外界MyService这个类能够被别的进程访问,只要别的进程知道这个ID,正是有了这个ID,B工程才能找到A工程实现通信。 说明: AIDL并不需要权限 B工程: 首先我们要将A工程中生成的文件拷贝到B工程中,在bindService方法中绑定aidl服务 绑定AIDL服务就是将RemoteService的ID作为intent的action参数。 说明: 如果我们单独将文件放在一个包里,那个在我们将gen目录下的该包拷贝到B工程中。 如果我们将文件和我们的其他类存放在一起,那么我们在B工程中就要建立相应的包,以保证文件的报名正确,我们不能修改文件 ` bindService(newInten(""),serviceConnection,; ServiceConnection的onServiceConnected(ComponentNamename,IBinderservice)方法中的service参数就是A工程中MyService类中继承了类的内部类的对象。 三.程序分析题 1.现在已经在Activity的布局文件中创建了id为Progressbar1的进度条,和id为button1的按钮,请写出实现以下功能的代码: 1)在Activity页面显示这个按钮和进度条; 2)点击按钮后,使用AsyncTask更新进度条的进度。 | import import import import import · import import import publicclassMyActivityextendsActivity{ privateProgressBarmProgressBar=null; privateButtonmyButton=null; /**Calledwhentheactivityisfirstcreated.*/ ~ @Override publicvoidonCreate(BundlesavedInstanceState){ (savedInstanceState); setContentView mProgressBar=(ProgressBar)findViewById myButton=(Button)findViewById (newBtnClickListener()); ( } privateclassBtnClickListenerimplementsOnClickListener{ publicvoidonClick(Viewarg0){ xecute(); } } privateclassmyAsyncextendsAsyncTask { 》 intduration=0; intcurrent=0; @Override protectedVoiddoInBackground(Void...params){ do{ ("handleMessage","id: "+().getId()+"name: "+().getName()); current+=10; ] try{ publishProgress(current);.values){ (values); (values[0]); ("updateThread","id: "+().getId()+"name: "+().getName()); 继承SQLiteOpenHelper实现: 1).创建一个版本为1的“”的数据库, 2).同时创建一个“diary”表(包含一个_id主键并自增长,topic字符型100长度,content字符型1000长度) 3).在数据库版本变化时请删除diary表,并重新创建出diary表。 publicclassDBHelperextendsSQLiteOpenHelper{ publicfinalstaticStringDATABASENAME=""; publicfinalstaticintDATABASEVERSION=1; //创建数据库 publicDBHelper(Contextcontext,Stringname,CursorFactoryfactory,intversion) { super(context,name,factory,version); } //创建表等机构性文件 publicvoidonCreate(SQLiteDatabasedb) { Stringsql="createtablediary"+ "("+ "_idintegerprimarykeyautoincrement,"+ "topicvarchar(100),"+ "contentvarchar(1000)"+ ")"; (sql); } //若数据库版本有更新,则调用此方法 publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion) { Stringsql="droptableifexistsdiary"; (sql); (db); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 程序设计 练习 答案