江西理工大学安卓Android期末考试.docx
《江西理工大学安卓Android期末考试.docx》由会员分享,可在线阅读,更多相关《江西理工大学安卓Android期末考试.docx(20页珍藏版)》请在冰豆网上搜索。
江西理工大学安卓Android期末考试
1.在android中使用RadioButton时,要想实现互斥的选择需要用的组件是?
A、ButtonGroupB、RadioButtons
C、CheckBoxD、RadioGroup
2.关于Handler的说法正确的是()
A、它实现不同线程间通信的一种机制
B、它避免了新线程操作UI组件
C、它采用栈的方式来组织任务的
D、它可以属于一个新的线程
3.下列哪个可做EditText编辑框的提示信息?
A、android:
inputTypeB、android:
text
C、android:
digitsD、android:
hint
4.退出Activity对一些资源及状态的操作保存,可在生命周期的哪个函数中进行。
()
A、onPause() B、onCreate() C、onResume() D、onStart()
5.Android项目工程下面的assets目录的作用是什么?
()
A、放置应用到的图片资源Res/drawable。
B、主要放置一些文件资源,这些文件会被原封不动打包到apk里面
C、放置字符串,颜色,数组等常量数据 res/values
D、放置一些与 UI 相应的布局文件,都是 xml 文件 res/layout
6.Intent的作用是()
A、intent是连接四大组件的纽带,可以实现界面间切换,可以包含动作和动作数据。
B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失。
C、实现应用程序间的数据共享。
D、处理一个应用程序整体性的工作。
7.下列哪个是AbsoluteLayout中特有的属性?
()
A、android:
layout_height B、android:
layout_x
C、android:
layout_above D、android:
layout_toRightOf
8.在手机开发中常用的数据库是()
A、sqlLite B、Oracle C、Sql Server D、Db23
9.关于BroadcastReceiver的说法不正确的是()
A、是用来接收广播Intent的。
B、一个广播Intent只能被一个订阅了此广播的BroadcastReceiver所接收。
C、对有序广播,系统会根据接收者声明的优先级别按顺序逐个执行接收者。
D、接收者声明的优先级别在的android:
priority属性中声明,数值越大优先级别越高。
B明显错误,广播可以被订阅了该广播的所有接受者接收。
10.使用MediaPlayer播放保存在sdcard上的mp3文件时()
A、需要使用MediaPlayer.create方法创建MediaPlayer。
B、直接newMediaPlayer即可。
C、需要调用setDataSource方法设置文件源。
D、直接调用start方法,无需设置文件源。
11.在android中使用RadioButton时,要想实现互斥的选择需要用的组件是()
A、ButtonGroup B、RadioButtons C、CheckBox D、RadioGroup
12.在多个应用中读取共享存储数据时,需要用到的query方法,是哪个对象的方法?
()
A、ContentResolverB、ContentProvider
C、Cursor D、SQLiteHelper
1、无论是ContentProvider还是ContentResolver都有各自的insert(),delte(),uapdte(),query(),四个方法。
2、使用ContentResolver是用来操作数据的。
贴一张李刚的《疯狂Android讲义》第9章9.2开头对这部分ContentResolver的原话.
注意红色框起来的部分,调用的是ContentResolver的的的
3、再不行上一小段代码证明吧:
我们在avtivity的onCreate()里边写一句代码就可以。
把鼠标放在query()函数上,可以看到解释的是ContentResolver的query(),不是ContentProvider的
13.内存监测工具DDMS中Log信息分为几个级别?
()
A、3 B、4 C、5 D、6
14.关于自定义Adapter的优化方法,我们通常采用三种方式,则以下能采用的是()
A、复用布局视图对象B、图片异步加载C、组件重用D、创建一个内部类
应该是不能采用的是什么:
B、图片异步加载
15.在多个应用中读取共享存储数据时,需要用到的query方法,是哪个对象的方法?
()
B、ContentResolverB、ContentProvider
C、Cursor D、SQLiteHelper
16.在android中使用RadioButton时,要想实现互斥的选择需要用的组件是()
A、ButtonGroup B、RadioButtons
C、CheckBox D、RadioGroup
17.能够自动完成输入内容的组件是()
A、TextView B、EditText
C、ImageViewD、AutoCompleteTextView
18.表示下拉列表的组件是()
A、Gallery B、Spinner C、GridView D、ListView
19.在Activity中需要找到一个id是bookName的的TextView组件,下面哪种语句写法是正确的?
()
A、TextView tv = this.findViewById(R.id.bookName);
B、TextView tv = (TextView)this.findViewById(R.id.code);
C、TextView tv = (TextView)this.findViewById(R.id.bookName);
D、TextView tv = (TextView)this.findViewById(R.string.bookName);
20.AndroidSDK中提供了一个什么处理图片的工具解决不同屏幕分辨率适配的问题。
()
A、Draw7-patchB、Draw8-patchC、Draw9-patchD、Draw10-patch
21.下列说法错误的是()
A、Button是普通按钮组件,除此外还有其他的按钮组件。
B、TextView是显示文本的组件,TextView是EditText的父类。
C、EditText是编辑文本的组件,可以使用EditText输入特定的字符。
D、ImageView是显示图片的组件,可以通过设置显示局部图片。
一般来说android不能设置显示图片中的局部
22.AndroidAPI将什么以ContentProvider的方式提供给开发者,使其可以对通讯录进行一系列操作?
()
A、文件浏览器B、数据库文件C、系统通讯录D、数据表
23.关于BroadcastReceiver的说法不正确的是()
A、是用来接收广播Intent的。
B、一个广播Intent只能被一个订阅了此广播的BroadcastReceiver所接收。
C、对有序广播,系统会根据接收者声明的优先级别按顺序逐个执行接收者。
D、接收者声明的优先级别在的android:
priority属性中声明,数值越大优先级别越高。
24.AndroidAPI提供了一系列的类来实现或操作ContentProvider相关功能,以下未涉及到的一类是()
A、ContentProviderB、ContentResolverC、ContentValuesD、ContentChanger
25.ArrayAdapter通常用什么构造方法进行构建?
()
A.ArrayAdapter(Contextcontext,inttextViewResourceId)
B.ArrayAdapter(Contextcontext,T[]objects)
C.ArrayAdapter(Contextcontext,inttextViewResourceId,T[]objects)
D.ArrayAdapter(inttextViewResourceId,T[]objects)
26.表示下拉列表的组件是()
A、Gallery B、Spinner C、GridView D、ListView
27.下列说法错误的是()
A、Button是普通按钮组件,除此外还有其他的按钮组件。
B、TextView是显示文本的组件,TextView是EditText的父类。
C、EditText是编辑文本的组件,可以使用EditText输入特定的字符。
D、ImageView是显示图片的组件,可以通过设置显示局部图片。
28.能够自动完成输入内容的组件是()
A、TextView B、EditText C、ImageViewD、AutoCompleteTextView
29、处理菜单项单击事件的方法不包含()
A、使用onOptionsItemSelected(MenuItemitem)响应。
B、使用onMenuItemSelected(intfeatureId,MenuItemitem)响应。
C、使用onMenuItemClick(MenuItemitem)响应。
D、使用onCreateOptionsMenu(Menumenu)响应。
1.列举Android系统中的五个进程优先级,并作出详细介绍。
答:
前台进程>可见进程>服务进程>后台进程>空进程。
(1)前台进程,表明用户正在与该进程进行交互操作。
(2)可见进程,指部分程序界面能够被用户看见,却不在前台与用户进行交互,不响应界面事件的进程。
(3)服务进程,指包含已启动服务的进程,特点是没有用户界面,在后台长期运行。
(4)后台进程,指不包含任何已经启动的服务,而且没有用户可见的Activity进程。
(5)空进程,不持有任何活动组件的进程。
2.介绍Android系统有四个重要的组件。
答:
Android系统的四种基本组件Activity、Service、BroadcaseReceiver和ContentProvider。
(1)Activity是Android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生的界面事件,用于提示用户程序已经正常启动。
(2)Service一般用于没有用户界面,但需要长时间在后台运行的应用。
(3)BroadcaseReceiver是用来接受并响应广播消息的组件。
(4)ContentProvider是Android系统提供的一种共享数据的机制,应用程序可以通过ContentProvider访问其他应用程序的私有数据。
3.在Android生命周期过程中,Activity一般表现为哪4种状态?
答:
(1)活动状态,完全能被用户看到,与用户进行交互的状态。
(2)暂停状态,Activity不处于用户界面的最上层,已经失去了焦点,不能与用户进行交互。
(3)停止状态,Activity在界面上完全不能被用户看到,保存了当前数据和UI状态。
(4)死亡状态,Activity被系统销毁。
4.Android系统中Intent的定义和用途?
Intent启动Activity方式有哪两种?
定义:
为其他组件提供交互能力,将一个组件的数据和动作传递给另一个组件。
用途:
1)启动Activity和Service2)发布广播消息
启动方式:
显式调用,指明调用Activity的Class类;隐式调用,无需指明具体启动哪一个Activity,选择权由Android系统和最终用户类似决定。
5.使用Service的方式有哪两种?
描述Service的生命周期。
Context.startService()方式启动
Context.bindService()方式启动
6.SQLite数据库体系结构中最核心的部分是什么?
答:
虚拟机/虚拟数据库引擎。
完成与数据操作相关的全部操作并且是客户与储存之间信息进行交换的中间单元。
7.ContentProvider是应用程序之间一种什么样的接口机制?
通过继承ContentProvider类可以创建一个新的数据提供者,请简述该过程。
答:
ContentProvider为不同的软件之间数据共享,提供统一的接口。
1)定义URI,即统一资源标识符,作用是唯一标识ContentProvider及其中的数据。
2)设置MIME数据类型,作用是指定某个扩展名的文件用某种应用程序来打开。
3)实现初始化、查询、插入、更新、删除、返回这几个方法。
onCreate():
初始化providerquery():
查询数据
insert():
插入数据到providerupdate():
更新provider的数据
delete():
删除provider中的数据getType():
返回provider中的数据的MIME类型
8.系统和用户之间进行信息交换的媒介是什么?
实现什么信息的转换?
答:
用户界面。
实现信息的内部形式与人类可以接受形式之间的转换。
9.Android中使用什么接口定义远程服务的窗口?
服务接口文件的扩展名是什么?
答:
AIDL.aidl
10.简述Android系统三种菜单的特点及使用方式。
(1)选项菜单:
可分为图标菜单和扩展菜单,图标菜单的子项最多是六个,支持显示图标,不支持单选框和复选框;而当子项多于六个时,采用扩展菜单,扩展菜单的子项是垂直排列,支持单选框和复选框,不支持显示图标。
第一次启动选项菜单时,只需要调用一次onCreateMenu函数。
(2)子菜单:
能够展示更加详细的信息,通过addSubMenu函数增加子菜单,但不支持嵌套。
(3)快捷菜单;点击界面元素超过2秒后,则启动该界面元素的快捷菜单。
每次启动时都要调用一次onCreateMenu函数。
11.编写一个Android程序,使用AsyncTask实现获取网页html代码,并且使用TextView显示。
publicclassMainActivityextendsActivity{
//定义组件
privateEditTextedtURL;
privateTextViewedtHTTP;
privateButtonbtnRequest;
privateStringstrURL;//用于存储网站地址
privateMyTaskmyTask;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化组件
edtURL=(EditText)findViewById(R.id.edturl);
edtHTTP=(EditText)findViewById(R.id.edthttp);
btnRequest=(Button)findViewById(R.id.requesthtml);
//监听获取html代码的按钮
btnRequest.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
if(!
(strURL=edtURL.getText().toString()).equals("")){
//实例myTask对象
myTask=newMyTask(edtHTTP);
myTask.execute(strURL);
}
}
});
}
}
publicclassMyTaskextendsAsyncTask{
privateTextViewedtHTTP;//用于显示HTML代码
privateStringBuffersbHTML;//用于储存HTML代码
publicMyTask(TextViewedtHTTP){
this.edtHTTP=edtHTTP;
sbHTML=newStringBuffer();
}
/**
*doInBackground方法内部执行后台任务,不可在此方法内修改UI
*/
@Override
protectedStringBufferdoInBackground(String...params){
//初始化HTTP的客户端
HttpClienthc=newDefaultHttpClient();
//实例化HttpGet对象
HttpGethg=newHttpGet(params[0]);
try{
//让HTTP客户端已Get的方式请求数据,并把所得的数据赋值给HttpResponse的对象
HttpResponsehr=hc.execute(hg);
//使用缓存的方式读取所返回的数据
BufferedReaderbr=newBufferedReader(newInputStreamReader(hr
.getEntity().getContent()));
//读取网页所返回的HTML代码
Stringline="";
sbHTML=newStringBuffer();
while((line=br.readLine())!
=null){
sbHTML.append(line);
}
returnsbHTML;
}catch(IOExceptione){
edtHTTP.setText("获取网页HTML代码出错!
!
!
");
}
returnnull;
}
/**
*onPostExecute方法用于在执行完后台任务后更新UI,显示结果
*/
@Override
protectedvoidonPostExecute(StringBufferresult){
//判断是否为null,若不为null,则在页面显示HTML代码
if(result!
=null){
edtHTTP.setText(result);
}
super.onPostExecute(result);
}
}
12.编写一个程序,输入两个整数值,点击求和按钮后显示两个数的和。
MainActivity.java
publicclassMainActivityextendsAppCompatActivity{
EditTextone,two;
Buttonadd;
TextViewshow;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
one=findViewById(R.id.one);
two=findViewById(R.id.two);
add=findViewById(R.id.add);
show=findViewById(R.id.show);
add.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
Stringfirst=one.getText().toString();
Stringsecond=two.getText().toString();
try{
intadd=Integer.parseInt(first)+Integer.parseInt(second);
show.setText("两数之和:
"+add);
}catch(Exceptione){
show.setText("请输入数字!
");
}
}
});
}
}
android:
id="@+id/one"
android:
layout_width="match_parent"
android:
layout_height="wrap_content"
/>
android:
id="@+id/two"
android:
layout_width="match_parent"
android:
layout_height="wrap_content"/>