android 测试题 答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一天:
1,
对于如下的一些映射关系,当请求URL为”/xxx/yyy/a.do”时,哪个Servlet会响应()Servlet1映射到/abc/*
Servlet2映射到/*
Servlet3映射到/abc
Servlet4映射到*.do
(10分)
A、Servlet1
B、Servlet2
C、Servlet3
D、Servlet4
参考答案:B
答案说明:url-pattern匹配规则:
①完全匹配:以“/”开头,以字母(非“*”)结束
如:<url-pattern>/test/list.do</url-pattern>
②目录匹配:以“/”开头且以“/*”结尾
如:<url-pattern>/test/*</url-pattern>
<url-pattern>/*</url-pattern>
③扩展名匹配:以“*.”开头,以扩展名结束
如:<url-pattern>*.do</url-pattern>
④“/”用来表明对应的Servlet为应用默认的Servlet。

在这种情况下Servlet路径是请求的URI去掉上下文路径并且路径信息为null。

2、
下列选项中,哪个方法可以准确的获取请求页面的一个文本框的输入(文本框的名称为name)()。

(10分)
A、request.getParamter(name)
B、request.getParamter(“name”)
C、request.getParamterValues(name)
D、request.getParamterValues(“name”)
参考答案:B
答案说明:request.getParameter("name")根据name获取value值
request.getParameterNames("name")根据name获取一组值,如多选框
3、
在web.xml中下面哪一个标签标示servlet的URL映射()(10分)
A、mapping
B、servlet-url
C、url-mapping
D、servlet-mapping
参考答案:D
答案说明:<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
多选题共2题满分:20分
4、
下列选项中,说法正确的是()。

(10分)
A、客户端每次请求都会创建一个request 对和response对象并且把这2个对象传递到doGet方法和doPost方法中
B、在浏览器的地址栏输入地址,点击回车,这个过程称为一次请求
C、HttpServletResponse,是一个接口,父接口是Servlet
D、服务器端根据客户端的请求,返回数据到浏览器中进行显示,这个过程称为一次响应参考答案:A,B,D
答案说明:C错误原因:HttpServletResponse,是一个接口,父接口是ServletResponse
5、
下列选项中,()是http相应包含的组成部分。

(10分)
A、响应体
B、响应头
C、响应尾
D、响应行
参考答案:A,B,D
答案说明:HttpServletResponse,是一个接口,父接口是ServletResponse,代表响应对象。

http的响应包含三部分组成:
第一部分:响应行第二部分:响应头第三部分:响应体
判断题共0题满分:0分
填空题共1题满分:10分
6、
_____是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。

(10分)
参考答案:Servlet
答案说明:Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。

它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。

Servlet是位于Web服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。

简答题共1题满分:20分
7、
请简述HttpServletRequest实例的getContextPath()方法,getRequestURL()方法和getParameter("name")方法的作用。

(20分)
参考答案:request.getContextPath()获取根路径;
request.getRequestURL();获取请求的url;
request.getParameter("name")根据name获取value值;
答案说明:request对象是请求对象。

请求一次就创建一个request对象,并且存储了请求的信息。

所以在表单提交中,我们可以通过request对象获取用户提交的所有信息。

HttpServletRequest类中的常用方法:
request.getContextPath()获取根路径。

request.getParameter("name")根据name获取value值
request.getParameterNames("name")根据name获取一组值,如多选框
request.getRequestURL();获取请求的url
request.getRequestDispatcher("路径").forward(request,response)转发是一次请求request.getCookie();获取请求中的cookie
request.getSession(true)获取session。

默认参数为true表示如果没有获取到,则重新创建并返回;false如果没有获取到,返回null
代码题共1题满分:20分
8、
写一个HelloServlet,实现向页面输出内容hi czbk。

(20分)
参考答案:JavaWeb101.txt下载
答案说明:实现Servlet
(1)实现Servlet接口
如果实现接口,需要把接口里面的方法都实现。

(2)继承GenericServlet,HttpServlet类
如果继承类,不需要把类中的方法都实现。

(3)需要web服务器知道java程序不是一个普通的java程序,而是一个servlet
通过配置进行操作,在web项目中,web.xml里面进行配置。

[1]定义一个类继承httpServlet
public class HelloServlet extends HttpServlet {
//处理get请求
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
PrintWriter writer = resp.getWriter();//向浏览器的输出流
writer.println("<html>");
writer.println("<body>");
writer.println("hi czbk");
writer.println("</body>");
writer.println("</html>");
}
//处理post请求
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
}
[2]重写2个方法doGet,doPost
[3]在在web.xml中配置
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>cn.itcast.servlet.ServletDemo1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
第二天:
1、
关于ANR描述错误的是()。

(10分)
A、ANR 全称是Application Not Responding
B、出现ANR 异常不会影响用户使用
C、在主线程中执行了耗时的操作会引起ANR
D、应用超过5秒钟不响应用户操作会出现anr
参考答案:B
答案说明:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。

用户可以选择让程序继续运行,但是,他们在使用你的应用程序时,并不希望每次都要处理这个对话框。

因此,在程序里对响应性能的设计很重要,这样,系统不会显示ANR给用户。

2、
关于handler消息分发机制,下列()方法可以延时发送消息。

(10分)
A、sendEmpty(..)
B、sendEmptyMessage(..)
C、sendMessageDelayed(..)
D、sendMessage(..)
参考答案:C
答案说明:我们利用Handler的sendMessageDelayed(msg,secs*1000),可以要求secs秒后,将信息放置在队列中,排队处理,很简单就能实现。

3、
关于Android中消息机制说法正确的是()。

(10分)
A、Handler只能用来发送消息
B、Handler是用来发送消息和处理消息的
C、MessageQueue是用来收集消息并主动发送消息
D、Looper是主消息的循环器.Looper是由handler创建的
参考答案:B
答案说明:Handler顾名思义就是处理者的意思,它主要用于发送消息和处理消息。

一般使用Handelr对象的sendMessage()方法发送消息,发出的消息经过一系列的辗转处理后,最终会传递到Handler对象的handlerMessage()方法中.
多选题共2题满分:20分
4、
下列选项中说法正确的是()。

(10分)
A、避免ANR,可以把耗时操作放到子线程
B、ANR是Application Not Response 应用无响应
C、只有在主线程(UI线程)才可以更新UI
D、消息机制可以用来处理这种更新UI的情况
参考答案:A,B,C,D
答案说明:(1)ANR Application Not Response应用无响应。

主线程(UI线程)。

(2)如果在主线程中进行了耗时的操作(比如连接网络,拷贝大数据)Thread.sleep();(3)避免ANR,可以把耗时操作放到子线程。

(4)在4.0之后谷歌强制要求连接网络不能在主线程中进行访问。

09-2601:49:03.818:W/System.err(1638):workOnMainThreadException
(5)只有在主线程(UI线程)才可以更新UI
09-2601:51:50.050:W/System.err(1708):android.view.ViewRootImpl$CalledFromWrongThreadE xception:Only the original thread that created a view hierarchy can touch its views.
(6)消息机制可以用来处理这种更新UI的情况。

5、
由于子线程不能更新UI代码,我们可以使用下列哪种方式()解决这个问题。

(10分)
A、在子线程中使用setImageView(..)设置图片
B、调用runOnUiThread(.. )方法中更新ui
C、在子线程中用handler发送message给主线程,然后在主线程中更新ui
D、Thread中直接更新ui
参考答案:B,C
答案说明:runOnUiThread(),顾名思义就是运行在UI线程,也就是主线程。

1.如果仅仅就是更新UI,那么我们可以用runOnUiThread(),当中的代码都会在主线程中执行。

2.当我们需要传递参数的时候,这时候就需要使用handler来实现
判断题共0题满分:0分
填空题共1题满分:10分
6、
_____主要用于存放所有通过Handler发送的消息。

(10分)
参考答案:MessageQueue
答案说明:1.Message
Message是在线程之间传递的消息,它可以在内部携带少量的信息what字段,用于在不同线程之间交换数据。

除此之外还可以使用arg1和arg2字段来携带一些整型数据,使用obj 字段携带一个Object对象。

2.Handler
Handler顾名思义也就是处理者的意思,它主要是用于发送和处理消息的。

发送消息一般是使用Handler的sendMessage()方法,而发出的消息经过一系列地辗转处理后,最终会传递到Handler的handleMessage()方法中。

3.MessageQueue
MessageQueue是消息队列的意思,它主要用于存放所有通过Handler发送的消息。

这部分消息会一直存在于消息队列中,等待被处理。

每个线程中只会有一个MessageQueue对象。

4.Looper
Looper是每个线程中的MessageQueue的管家,调用Looper的loop()方法后,就会进入到一个无限循环当中,然后每当发现MessageQueue中存在一条消息,就会将它取出,并传递到Handler的handleMessage()方法中。

每个线程中也只会有一个Looper对象。

简答题共1题满分:20分
7、
简单介绍一下Handler使用步骤.(20分)
参考答案:1在主线程创建Handler对象
Private Handler handler=new Handler(){
}
2重写handlemessage方法
3拿着主线程创建的Handler发送一条消息
handler.sendMessage();
4重写的handlemessage方法就会接收到我们发送的消息.
答案说明:Android4.0以后不能在UI线程访问网络,而子线程也不能更新UI界面。

为了根据下载进度实时更新UI界面,就需要用到Handler消息机制来实现线程间的通信,一般我们在主线程创建Handler对象.然后开启一个子线程去访问网络处理耗时的任务,然后通过主线程创建的Handler发送消息,消息就被加入到了消息队列MessageQueue中,系统里有一MainLooper(主消息的循环器),不断的监视消息队列,一旦发现消息队列里有消息,就把消息给取出来交给Handler,我们重写Handler的handleMessage()方法,在这个方法里面去更新ui.
代码题共1题满分:20分
8、
编写一个图片查看器的案例,访问指定的url地址,并将获取到的图片更新ui界面。

(请使用除handler以外的方式)。

(20分)
答案说明:子线程不能更新ui,所以通过runOnUiThread在主线程中更新ui.
Xml布局文件:
<LinearLayout xmlns:android="/apk/res/android"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="查看" />
<ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Java代码中:
public class MainActivity extends Activity {
private ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(yout.activity_main);
// [1]找到我们关心的控件
iv = (ImageView) findViewById(R.id.iv);
}
// [2]点击按钮进行查看指定路径的源码
public void click(View v) {
new Thread() {
public void run() {
String path = "https:///img/270_dbb92.png";
try {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection)
url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
int code = conn.getResponseCode();
if (code == 200) {
InputStream inputStream = conn.getInputStream();
final Bitmap bitmap =
BitmapFactory.decodeStream(inputStream);
runOnUiThread(new Runnable() {
public void run() {
iv.setImageBitmap(cacheBitmap);
}
});
}
} catch (Exception e) {
e.printStackTrace();
}
};
}.start();
}
第三天:
1,当前Activity被其他Activity覆盖或者锁屏,系统会调用()生命周期方法,暂停当前Activity的执行。

(10分)
A、onDestroy()
B、onStop()
C、onPasue()
D、以上都会调用
参考答案:C
答案说明:1.启动Activity:系统会先调用onCreate()方法,然后调用onStart()方法,最后调用onResume()方法,Activity进入运行状态。

2.当前Activity被其他Activity覆盖或者锁屏:系统会调用onPasue()方法,暂停当前Activity的执行。

3.当前Activity由覆盖恢复到前台或者被解锁屏:系统会调用onResume()方法,再次进入运行状态。

4.当前Activity转到新的Activity界面或者Home键回到主屏,自居后台:系统会调用onPasue()方法,然后调用onStop()方法,进入停滞状态。

5.用户退回到此Activity:系统会调用onRestart()方法,然后调用onStart()方法,最后调用onResume()方法,再次进入运行状态。

6.当前Activity处于被覆盖状态或者后台不可见状态:有的时候系统内存不足,会杀死该Activity,而后用户退回到该Activity时:再次调用onCreate(),onStart(),onResume()方法,进入运行状态。

7.用户退出该Activity:系统会调用onPause()方法,然后onStop()方法,最后onDestroy()方法,结束该Activity。

2、
Intent中如果既要设置类型又要设置数据,需要使用()方法。

(10分)
A、setData(..)
B、setType(..)
C、setDataAndType(..)
D、setTypeAndData(..)
参考答案:C
答案说明:Intent.setData(data)和intent.setType(type)注意这两个方法会互相清除,意思就是:如果先设置setData(data)后设置setType(type),那么后设置的setType(type)会把前面setData(data)设置的内容清除掉,而且会报错,反之一样,所以如果既要设置类型与数据,那么使用setDataAndType(data,type)这个方法。

3、
使用()管理器来完成发送短信的功能。

(10分)
A、ActivityManager
B、WifiManager
C、SmsManager
D、ConnectivityManager
参考答案:C
答案说明:ActivityManager是与系统中所有运行着的Activity交互提供了接口,主要的接口围绕着运行中的进程信息,任务信息,服务信息等。

WifiManager类似获得wifi链接名字,判断是否链接,开关等一些和无线相关;SmsManager管理短信操作,如发送数据,文本和PDU短信;
ConnectivityManager主要管理网络连接相关操作;
多选题共2题满分:20分
4、
intent传递数据时可以传递()类型的数据。

(10分)
A、Serializable
B、charsequence
C、Parcelable
D、Bundle
参考答案:A,B,C,D
答案说明:第一类:简单或基本数据类型;
第二类:传递一个Bundle;
第三类:传递Serializable对象;
第四类:Parcelable对象;
第五类:Intent return this;
5、
下列选项中()属于Activity的生命周期方法。

(10分)
A、onCreate()
B、onStart()
C、onCreateView()
D、onRestart()
参考答案:A,B,D
答案说明:生命周期方法调用时间
onCreate()当Activity第一次创建的时候调用
onDestory()当Activity销毁的时候调用
onStart()当Activity变成可见的时候调用
onStop()当Activity不可见的时候调用
onResume()当Activity可以和用户交互的时候调用
onPause()当Activity不可和用户交互的时候调用
onRestart()当Activity停止了,但是没有销毁,从停止到启动时调用
判断题共0题满分:0分
填空题共1题满分:10分
6、
首次启动Activity时,系统会先后调用_____生命周期方法,之后Activity进入运行状态。

(10分)
参考答案:onCreate()->onStart()->onResume()
答案说明:1.启动Activity:系统会先调用onCreate()方法,然后调用onStart()方法,最后调用onResume()方法,Activity进入运行状态。

2.当前Activity被其他Activity覆盖或者锁屏:系统会调用onPasue()方法,暂停当前Activity的执行。

3.当前Activity由覆盖恢复到前台或者被解锁屏:系统会调用onResume()方法,再次进入运行状态。

4.当前Activity转到新的Activity界面或者Home键回到主屏,自居后台:系统会调用onPasue()方法,然后调用onStop()方法,进入停滞状态。

5.用户退回到此Activity:系统会调用onRestart()方法,然后调用onStart()方法,最后调用onResume()方法,再次进入运行状态。

6.当前Activity处于被覆盖状态或者后台不可见状态,有的时候系统内存不足,会杀死该Activity,而后用户退回到该Activity时:再次调用onCreate(),onStart(),onResume()方法,进入运行状态。

7.用户退出该Activity:系统会调用onPause()方法,然后onStop()方法,最后onDestroy()方法,结束该Activity。

简答题共1题满分:20分
7、
请简单谈谈你对Activity四种启动模式的理解。

(20分)
参考答案:Activity的启动模式
在AndroidManifest.xml中,可以配置每个activity的启动模式:例如:
android:launchMode="standard"
1.standard标准模式
不管有没有已存在的实例,都生成新的实例。

每次调用startActivity()启动Activity时都会创建一个新的Activity放在栈顶,每次返回都会销毁实例并出栈,可以重复创建。

2.singletop单一顶部模式
如果任务栈的栈顶存在这个要开启的activity,不会重新创建新的activity,而是复用已存在的activity。

保证栈顶如果存在,则不会重复创建,但如果不在栈顶,那么还是会创建新的实例。

3.singletask单一任务模式
是一个比较严格的模式,在当前任务栈里面只能有一个实例存在,当开启activity的时候,就去检查在任务栈里面是否有实例已经存在,如果有实例存在就复用这个已经存在的activity,并且把这个activity上面的所有的别的activity都清空,复用这个已经存在的activity。

4.singleInstance
这种启动模式比较特殊,它会启用一个新的任务栈,activity会运行在自己的任务栈里,这个任务栈里面只有一个实例存在并且保证不再有其他Activity实例进入。

在整个手机操作系统里面只有一个实例存在。

答案说明:Singletop应用场景:浏览器的书签
Singletask应用场景:BrowserActivity浏览器界面,播放器的播放Activity。

如果一个activity的创建需要占用大量的系统资源(cpu,内存)一般配置这个activity 为singletask的启动模式。

webkit内核(c)初始化需要大量内存如js解析引擎、html渲染引擎、http解析、下载…如果使用singletask模式,可以减少内存开销,cpu占用。

SingleInstance应用场景:来电页面InCallScreenActivity。

代码题共1题满分:20分
8、
打开指定包名,类名的Activity。

(包名:com.itcast.intent.NextActivity类名:NextActivity)(20分)
答案说明:Intent意图:显示意图和隐式意图。

显式意图:调用Intent.setComponent()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。

隐式意图:没有明确指定组件名的Intent为隐式意图。

Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。

// trim()方法删除字符串开始和结束位置的空格
Intent intent = new Intent();
intent1.setClassName("com.itcast.intent",
"com.itcast.intent.NextActivity");
//开启打电话意图
startActivity(intent);
第四天:
1、在代码中获取注册的广播事件方法是().(10分)
A、getAction()
B、getActionCall()
C、getMethod()
D、getOutCall()
参考答案:A
答案说明:getAction()方法是获取广播事件的方法.
2、
在广播接收者中,setResultData()方法的作用是()。

[标明前提,](10分)
A、修改广播接收者的数据
B、修改数据并往下传递
C、设置广播接收者的数据
D、以上都不对
参考答案:A
答案说明:有序广播可以通过setResultData()来修改广播的数据
3、
广播接收者需要在清单文件配置()节点。

(10分)
A、receiver
B、broadReceiver
C、service
D、contentProvider
参考答案:A
答案说明:广播接收者的配置需要在清单文件里配receiver节点.
多选题共2题满分:20分
4、
关于广播接收者说法正确的是()(10分)
A、Android中定义广播接收者要继承BroadCastReceiver
B、Android中定义广播接收者的目的之一是方便我们开发者进行开发
C、Android系统中内置了很多系统级别的广播
D、Android中定义广播这个组件意义不是很大
参考答案:A,B,C
答案说明:Android中定义广播接收者要继承BroadCastReceiver,Android系统中内置了很多系统级别的广播比如外拨电话,接收到短信,sd卡卸载等等,系统定义了这么多广播事件方便我们开发者进行开发,意义很大.
5、
关于有序广播和无序广播说法错误的是().(10分)
A、Android中广播分有序广播和无序广播
B、无序广播是按照一定的优先级进行接收
C、无序广播可以被拦截,可以被修改数据
D、有序广播按照一定的优先级进行发送
参考答案:B,C
答案说明:Android中广播分有序广播和无序广播有序广播按照一定的优先级发送,无序广播不可以被拦截数据不可以被修改
判断题共0题满分:0分
填空题共1题满分:10分
6、
调用_____方法动态的注册广播接收者.
(10分)
参考答案:registerReceiver
答案说明:广播接收者可以在清单文件中注册也可以通过代码的方式进行注册.
简答题共1题满分:20分
7、
请简要说明广播接受者在Android4.0以后做了哪些安全考虑?在Android4.0以后如何使广播接受者不生效?(20分)
参考答案:安卓4.0版本之后为了安全考虑,要求应用程序必须要有界面,必须被用户运行过一次,广播接受者才会生效。

安卓4.0版本的强行停止相当于冻结一个应用,一旦应用程序被用户强行停止了,广播接受者就不会生效了,直到用户手动打开这个应用程序为止。

答案说明:安卓4.0版本之后为了安全考虑,要求应用程序必须要有界面,必须被用户运行过一次,广播接受者才会生效。

安卓4.0版本的强行停止相当于冻结一个应用,一旦应用程序被用户强行停止了,广播接受者就不会生效了,直到用户手动打开这个应用程序为止。

安卓4.0以前的版本没有这样的安全考虑。

代码题共1题满分:20分
8、
请编写一个程序,要求定义一个广播接收者,用来接收开机的广播。

(20分)
答案说明:android.intent.action.BOOT_COMPLETED是开机的广播的Action,注意需要加入权限:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
1、定义广播接受者用来接收开机的广播:
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent intent1 = new Intent(context,MainActivity.class);
Intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent1);
}
}
2、清单文件注册
<receiver android:name="com.itheima.boot.BootReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter>
</receiver>
3、加入权限
<uses-permission
android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
第五天:
1,以下关于服务的生命周期说法正确的是()(10分)
A、服务的生命周期和Activity一样
B、服务的创建会执行onCreate()
C、启动时 onCreate()–>onStart()->onResume()
D、通过startService方式开启服务,首先会调用onCreate 和 onStart
方法
参考答案:D
答案说明:通过startService方式开启服务首先会调用onCreate()方法然后调用onSta rt( )方法
2、如果一个进程含有一个service和一个可视activity,那么这个进程是什么进程()(10分)
A、前台进程
B、可见进程
C、后台进程
D、空进程
参考答案:B
答案说明:Android 对进程的重要性评级的时候,选取它最高的级别。

如果一个进程含有一个service和一个可视activity,进程将被归入一个可视进程而不是service进程。

3、
通过bindService()绑定服务,需要传入一个ServiceConnection类的对象,需要实现这个类中的哪两个方法()(10分)
A、onConnected(...)和onDisconnected(...)
B、onServiceConnected(...)和onServiceDisconnected(...)
C、onStartConnected(...)和onSartDisconnected(...)
D、onCreate(...)和onDisconnected(...)
参考答案:B
答案说明:ServiceConnection类是用来监听服务的状态,需要实现其中的onServiceConn ected()方法和onServiceDisconnected()方法。

多选题共2题满分:20分
4、
关于AIDL描述正确的是()(10分)
A、AIDL全称是Android interface definition Language
B、AIDL出现目的是解决进程间通信
C、AIDL定义接口的源代码必须以.aidl结尾
D、AIDL语言就是java语言的演变
参考答案:A,B,C
答案说明:在Android系统中,各个应用程序都运行在自己的进程中,进程之间一般无法直接进行通信,如果想要完成不同进程之间的通信,就需要使用远程服务通信。

远程服务通信是通过AIDL(Android Interface Definition Language)实现的,它是一种接口定义语言.它不是由java演变的
5、android 通过startService 的方式开启服务,以下说法错误的是()(10分)
A、当第一次启动的时候先后调用 onCreate()和 onStart()方法
B、当第一次启动的时候只会调用 onCreate()方法
C、如果 service 已经启动,将先后调用 onCreate()和 onStart()方法
D、如果 service 已经启动,只会执行 onStart()方法,不在执行
onCreate()方法
参考答案:B,C
答案说明:通过startService方式开启服务,当第一次启动的时候先后调用onCreate()和onStart()方法,如果service 已经启动,只会执行onStart()方法,不在执行o nCreate()方法
判断题共0题满分:0分
填空题共1题满分:10分
6、
通过bindService方式开启的服务,_____方法可以进行解绑服务.
(10分)
参考答案:unbindService()
答案说明:通过bindService方式开启服务特点是服务和调用者之间不求同时生,但求同时死,所以调用者退出的时候需要解绑服务,解绑服务调用unbindService().
简答题共1题满分:20分
7、
简单介绍一下Android中如何创建服务(20分)
参考答案:(1)定义一个类继承Service类
在清单文件里面注册Service
答案说明:服务(Service)是Android中的四大组件之一,它能够长期在后台运行且不提供用户界面。

服务的创建定义一个类继承Service.并且四大组件都需要在清单文件里注册.代码题共1题满分:20分
8、
请编写一段程序,开启服务,并调用服务中的方法。

(20分)
参考答案:u.zip 下载
答案说明:调用Service中的方法需要通过IBinder中间人对象,调用bindService()方法需要传入一个ServiceConnection对象,这个类中有一个onServiceConnected()方法,当绑定成功后调用,并且Service中onBind()方法中返回的IBinder对象就被传递到onServ iceConnected()方法中,在这个方法中可以通过中间人对象调用服务中的方法。

1、创建Service,并在服务中定义方法
public class TestDemoService extends Service {
@Override
public IBinder onBind(Intent intent) {
return new MyBinder();
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onDestroy() {
super.onDestroy();
}
public void serviceMethod(){
Toast.makeText(this, "我是服务里面的方法", 1).show();
}
}
2、定义接口:
public interface Iservice {
public void serviceMethod();
}
3、创建Binder类,实现接口
private class Mybinder extends Binder implements IService {
@Override
public void serviceMethod() {
}
}
4、定义ServiceConnection类,在onServiceConnected中调用服务方法
private class MyConn implements ServiceConnection{
@Override
public void onServiceConnected(ComponentName name, IBinder service) { MyBinder binder = (MyBinder) service;
binder.callServiceMethod();
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
}
5、点击按钮,开启服务
public void click(View v){
bindService(new Intent(this,TestDemoService.class), new MyConn(),
BIND_AUTO_CREATE); }
第六天:
1,短信内容提供者的主机名是()(10分)
A、sms
B、com.android.sms
C、smsProvider
D、com.android.smsProvider
参考答案:A
答案说明:短信内容提供者的主机名是sms
2、如果要调用现成的ContentProvider,获得如下()对象才能调用其方法进行增删查改。

(10分)
A、CursorLoader
B、ContentResolver
C、Cursor
D、ContentProvider
参考答案:B
答案说明:内容提供者暴露出来的数据,都是通过内容解析者来进行增删改查
3、自定义内容观察者时,继承的类是()(10分)
A、BaseObserver
B、ContentObserver
C、BasicObserver
D、DefaultObserver
参考答案:B
答案说明:自定义内容观察者时,继承的类是ContentObserver
多选题共2题满分:20分
4、下列关于内容提供者的描述,正确的是()(10分)
A、提供的Uri必须符合规范
B、可以提供本应用所有数据供别人访问
C、必须在清单文件注册
D、authorities属性必须和包名一致
参考答案:A,B,C
答案说明:authorities一般和包名一致,不是必须的。

5、
在下列选项中,关于内容观察者说法正确的是()(10分)
A、内容观察者不是Android中的四大组件
B、内容观察是四大组件之一
C、内容观察者原理和java中的观察者模式一模一样
D、内容观察者原理是通过注册Uri的形式来观察数据的变化
参考答案:A,D
答案说明:内容观察者不是四大组件,内容观察者原理是通过注册Uri的方式来观察数据的变化。

判断题共0题满分:0分
填空题共1题满分:10分
6、
Android中通过内容提供者来读取联系人信息,_____表用来保存联系人信息的。

(10分)
参考答案:data
答案说明:Android中读取联系人信息有三张关键的表1 data表用来存储联系人信息的表,2 raw_contacts 表用来存储一共有多少个联系人. 3 mimetype表用来区分联系人信息的表
简答题共1题满分:20分
7、
请简要说明一下内容观察者的原理(20分)
参考答案:内容观察者(ContentObserver)是通过观察指定Uri所代表的数据来观察指定的数据发生变化的
答案说明:内容观察者(ContentObserver)是用来观察指定Uri所代表的数据。

当Conte ntObserver观察到指定Uri代表的数据发生变化时,就会触发ContentObserver的onChan ge()方法。

此时在onChange()方法里使用ContentResovler可以查询到变化的数据
代码题共1题满分:20分
8、
请编写一段程序,实现短信备份的功能,并将短信备份到sd卡上。

(20分)
参考答案:6院校出题2.txt 下载
答案说明:当点击备份短信的按钮把手机里真实的短信内容以xml的方式备份到sd上.
1 创建一个Android应用MainActivity 对应的布局文件主要代码
<RelativeLayout xmlns:android="/apk/res/android"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<Button。

相关文档
最新文档