大一下学期Android期末练习题


一、选择题

1、以下那个控件可以用来显示图片(A)。
a、ImageView   b、TextView   c、Button   d、以上都可以

2、针对ListView组件描述错误的是(D)。
a、ListView自带滚动面板功能,如果数据超出屏幕范围,可以自动滚动
b、ListView在使用时,必须通过Adapter来加入数据
c、ListView如果想改变显示内容,只需要调整对应的List集合中的数据即可。
d、ListView中可以通过OnItemClickListener来完成针对某一项目的点击监听

3、Android在退出程序时,想做一些处理,可以在哪个方法中完成?(D)。
a、onCreate   b、onStart   c、onStop    d、onDestory

4、Android开发中常用的数据库是(C)。
a、SQL Server   b、MySQL   c、SQLite   d、Oracle

5、以下调整宽度和高度的属性,哪个不是Android系统提供的?(C)。
a、Match_parent   b、Wrap_content   c、Fill_content   d、Fill_parent

6、从其他应用中读取共享的数据库数据,需要用到的是query方法,返回Cursor数据,那么这个方法是哪个对象的方法?(B)。
a、ContentProvider   b、ContentResolver   c、SQLiteOpenHelper   d、SQLiteDataBase

7、下列不属于Android布局的是 (C)。
a、LinearLayout   b、RelativeLayout   c、AnnotationLayout   d、FrameLayout

8、Android项目中assets目录的作用是什么?(C)。
a)放置字符串,颜色等信息  b)放置图片资源   c)放置较大的文件资源   d)放置界面布局配置

9、以下哪个对象是自定义组件中用来绘制图形内容的对象(B)。
a、Bitmap   b、Canvas   c、BufferedImage   d、Drawable

10、以下属性中哪个是LinearLayout拥有但RelativeLayout没有的属性(C)。
a、android:layout_width   b、android:layout_height   c、android:layout_weight   d、android:background

11、下面关于Android dvm的进程和Linux的进程,应用程序的进程说法正确的是(C)
A、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 中的一个进程,所以说可以认为是同一个概念.

12、Android项目工程下面的assets目录的作用是什么(B)
A、放置应用到的图片资源。  B、主要放置多媒体等数据文件  C、放置字符串,颜色,数组等常量数据   D、放置一些与UI相应的布局文件,都是xml文件

13、关于res/raw目录说法正确的是(A)
A、 这里的文件是原封不动的存储到设备上不会转换为二进制的格式
B、 这里的文件是原封不动的存储到设备上会转换为二进制的格式
C、 这里的文件最终以二进制的格式存储到指定的包中
D、 这里的文件最终不会以二进制的格式存储到指定的包中

14、关于ContentValues类说法正确的是(A)
A、和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是String类型,而值都是基本类型。
B、和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是任意类型,而值都是基本类型。
C、和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名,可以为空,而值都是String类型。
D、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是String类型,而值也是String类型。

15、我们都知道Hanlder是线程与Activity通信的桥梁,如果线程处理不当,你的机器就会变得越慢,那么线程销毁的方法是(A)
A、onDestroy()   B、onClear()  C、onFinish()   D、onStop()

16、下面在AndroidManifest.xml文件中注册BroadcastReceiver方式正确的是(A)

A、<receiver android:name=".NewBroad">
      <intent-filter>
         <action android:name="android.provider.action.NewBroad"/>
      </intent-filter>
   </receiver>
B、<receiver android:name=".NewBroad">
      <intent-filter>
         <action android:name="android.provider.action.NewBroad"/>
      </intent-filter>
   </receiver>
C、<receiver android:name=".NewBroad">
      <action android:name="android.provider.action.NewBroad"/>
   </receiver>
D、<intent-filter>
      <receiver android:name=".NewBroad">
         <action android:name="android.provider.action.NewBroad"/>
      </receiver>
   </intent-filter>

17、下面的对自定义style的方式正确的是(A)

A、<resources>
      <style name="myStyle">
            <item name="android:layout_width">fill_parent</item>
      </style>
   </resources>
B、<style name="myStyle">
      <item name="android:layout_width">fill_parent</item>
   </style>
C、<resources>
      <item name="android:layout_width">fill_parent</item>
   </resources>
D、<resources>
      <style name="android:layout_width">fill_parent</style>
   </resources>

18、Activity对一些资源以及状态的保存操作,最好是保存在生命周期的哪个函数中进行(B)
A、onPause()  B、onCreate()   C、 onResume()   D、onStart()

19、android 中下列属于Intent的作用的是(C)
A、实现应用程序间的数据共享
B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失
C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带
D、处理一个应用程序整体性的工作

20、下列属于SAX解析XML文件的优点的是(B)
A、将整个文档树在内存中,便于操作,支持删除,修改,重新排列等多种功能
B、不用事先调入整个文档,占用资源少
C、整个文档调入内存,浪费时间和空间
D、不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会消失

21、关于 BroadcastReceiver的说法不正确的是(A)
A、是用来接收广播Intent的
B、一个广播 Intent只能被一个订阅了此广播的BroadcastReceiver所接收
C、对有序广播,系统会根据接收者声明的优先级别按顺序逐个执行接收者
D、接收者声明的优先级别在< intent- filter>的 Priority,属性中声明,数值越大优先级别越高

22、关于 Android布局文件常用的长度/大小单位的描述不正确的是(C)
A、dp是设备独立像素,不依赖于设备,是最常用的长度单位
B、sp代表放大像素,主要用于字体大小的显示
C、px是像素单位,在不同的设备上显示效果相同,因此推荐在布局中使用该单位
D、在设置空间长度等相对距离时,推荐使用dp单位,该单位随设备密度的变化而变化

23、关于适配器Adapter的说法正确的有(B)
A、它主要是用来存储数据 B、它主要用来把数据绑定到组件上
C、它主要用来解析数据   D、它主要用来存储xml数据

24、以下关于 Android应用程序的目录结构描述中,不正确的是(D)
A、src目录是应用程序的主要目录,由Java类文件文件组成
B、assets目录是原始资源目录,该目录中的内容将不会被R类所引用
C、res目录是应用资源目录,该目录中的所有资源内容都会被R类所索引
D、Androidmanifest.xml文件是应用程序目录清单文件,该文件由程序自生成,不需要程序员手动修改。

25、XML布局文件中,Layout width属性的属性值不可以是什么?(D)
A、match parent  B、fill parent  C、wrap content  D、match content

二、填空题
1、Android平台由应用程序层,应用程序框架层,核心类库和Linux内核组成。
2、Android平台提供了2D和3D的图形支持,数据库支持SQLite。
3、目前已知的可以用来搭建Android开发环境的系统有Windows、Linux和Mac等。
4、Android SDK主要以Java语言为基础。
5、创建工程时需要填写的信息名称有应用程序名和包的名字。
6、Android 中Service的实现方法是startService()和bindService()。
7、当启动一个Activity并且新的Activity执行完后需要返回到启动它的Activity来执行的回调函数是启动:startActivityForResult(),回调:onActivityResult()。
8、Android的数据存储有文件存储、SharedPreference以及SQLite数据库等方式。
9、欢迎界面判断用户是否登陆过来决定是否显示使用SharedPreference来记录。
10、启动Activity的方法是startActivity()或者startActivityForResult()方法。

三、判断题
1、一个Activity就是一个可视化的界面或者看成控件的容器。(对)
2、Intent有很长的生命周期,是没有用户界面的程序,可以保持程序在后台运行,不会因为切换界面而消失。(错)
3、onPause()方法在Activity被暂停或者回收CPU和其他资源时被调用,用于保存活动状态的,也是对运行数据的现场保护。(对)
4、onDestroy()方法是Activity被关闭前最后一个调用的方法,当调用finish()方法或者系统为了节约空间关闭它时调用。(对)
5、如果service已经启动,再次启动该服务时将先后调用onCreate()和onStartCommand()方法。(错)
6、使用startService()方法启动服务后,调用者和服务之间没有联系,即使调用者退出了,服务仍然在运行。(对)
7、当程序中的广播在AndroidManifest进行注册后,即使应用程序被关闭了,也可以接收操作系统发出的广播。(对)
8、当Activity的启动模式被设置为SingleTop时,表示该Activity的实例在栈顶时只会产生一个实例。(对)
9、UIthread通常就是main Thread,Android启动程序时会替它建立一个MessageQueue。(对)

四、简答题
1、请描述Activity的生命周期流程
答:Activity生命周期及其应用Activity在创建到销毁的过程中也经历过多个方法来监听其生命周期执行过程。其中,主要有以下几个方法:
onCreate():在创建activity时被回调。在整个生命周期只会被调用一次,做一些数据的初始化工作。 
onStart():启动activity时被回调。也就是当一个activity变为显示时被回调。
onRestart():重新启动activity时被回调。该方法总是在onStart()方法以后执行。
onResume():当activity由暂停状态恢复为活动状态时调用。调用该方法后,该activity位于activity栈的栈顶。该方法总是在onPause()方法以后执行。
onPause():暂停Activity时被回调。它通常被用来持久化数据、停止动画活其他耗费资源的动作。
onStop():停止Activity时被回调。
onDestroy():当Activity退出销毁时自动执行该方法,主要用来执行收尾和垃圾回收的工作。

2、列出你开发中使用到的常用布局,并说明这些布局的特点。
答:线性布局(LinearLayout):以水平或垂直方式显示界面中的控件。
相对布局(RelativeLayout):通过相对定位的方式指定控件位置,即以父容器或其他控件为参照物,摆放控件位置。
帧布局(FrameLayout):最简单的布局,所有控件默认显示在屏幕左上角,按照先后放入的顺序重叠摆放。
表格布局(TableLayout):以表格形式排列控件,每个单元格都可以放置控件,需要和TableRow配合使用。
绝对布局(AbsoluteLayout):通过指定x,y坐标来控制控件的位置,但使用繁琐,不容易控制,所以不推荐使用。

3、Activity的生命周期有哪些状态?状态转换时调用的方法各是什么?
答:一个Activity有三种状态: 
Running,运行在前台(在当前Activity栈的栈顶)。
Paused,失去了焦点但是仍然对用户可见,比如有其他的Activity在它之上,或者透明或者没有遮住整个屏幕。
Stopped,被其他Activity完全覆盖,需要注意的是包括暂停状态在内,这两种状态都仍然保存了所有状态信息,直到被系统终止。
void onCreate(),void onStart(),void onRestart() ,void onResume(),void onPause(),void onStop(),void onDestroy()

4、什么是Service,Service有哪些状态?
答:Services是一个没有任何UI能够在后台长时间运行的应用程序组件,Service是android系统中的四大组件之一(Activity、Service、BroadcastReceiver、ContentProvider),它跟Activity的级别差不多,但不能自己运行只能后台运行,并且可以和其他组件进行交互。有两种启动方法:一般启动用startService()方法,绑定启动用bindService()方法。

5、请介绍Android的数据存储方式。
答: Android提供了5中存储数据的方式,分别是以下几种
1)、使用Shared Preferences存储数据,用来存储key-value对格式的数据,它是一个轻量级的键值存储机制,只可以存储基本数据类型。
2)、使用文件存储数据,通过FileInputStream和FileOutputStream对文件进行操作。在Android中,文件是一个应用程序私有的,一个应用程序无法读写其他应用程序的文件。
3)、使用SQLite数据库存储数据,Android提供的一个标准数据库,支持SQL语句。
4)、使用ContentProvider存储数据,是所有应用程序之间数据存储和检索的一个桥梁,它的作用就是使得各个应用程序之间实现数据共享。它是一个特殊的存储数据的类型,它提供了一套标准的接口用来获取数据,操作数据。
5)、使用网络存储数据。

6、请简述下ContentProvider是如何实现数据共享的。
答:ContentProvider是不同应用程序间数据共享的标准API,以数据库的方式提供了对数据的增、删、改、查,重写该类用于提供数据和存储数据的4个方法,就可以向其他应用共享数据。其他应用创建ContentResolver对象,用getContentReslover()初始化,提供正确的Uri,就可以访问其他应用的数据了。

五、编程题
1、请编写一个数据库类,继承SQLiteOpenHelper,实现如下功能:
(1)创建一个版本为1的“diaryOpenHelper.db”的数据库
(2)同时创建一个“diary”表(包含一个_id主键并自增长,topic字符型100长度,content字符型1000长度)
(3)在数据库版本变化时请删除diary表,并重新创建出新diary表。

public  final  static  String  DATABASENAME ="diaryOpenHelper.db";
public  final  static  int  DATABASEVERSION =1;
//创建数据库
public  DBHelper(Context  context,String  name,CursorFactory  factory,  int  version)
{
   super(context, name,  factory, version);
}
//创建表等机构性文件
public  void  onCreate(SQLiteDatabase  db) {
String  sql ="create  table  diary"+
“(_id  integer  primary  key  autoincrement, topic  varchar(100), content  varchar(1000))";
db.execSQL(sql);
}
//若数据库版本有更新,则调用此方法
public  void  onUpgrade(SQLiteDatabase  db,  int oldVersion ,  int  newVersion) {
String   sql = "drop table if exists diary";
db.execSQL(sql);
this.onCreate(db);
}
}

2.编写一个Android应用。要求能够发送和接收自定义的广播,把接收的广播内容显示在监视器面板中,参见教材P154页的实战演练-拯救史迪仔。

3.编写一个Android应用。要求能够读取模拟器中短信内容,显示在屏幕上,参见教材P186页的实战演练-查看短信的猫。

声明:子客|版权所有,违者必究|如未注明,均为原创|网站采用BY-NC-SA协议授权

转载:请注明原文链接 - 大一下学期Android期末练习题


Carpe Diem and Do what I like