android 测试题 答案
更新时间:2024-04-26 02:54:01 阅读量: 综合文库 文档下载
第一天:
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匹配规则:
①完全匹配:以“/”开头,以字母(非“*”)结束 如:
③扩展名匹配:以“*.”开头,以扩展名结束 如:
④ “/” 用来表明对应的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获取value值
request.getParameterNames(\根据name获取一组值,如多选框 3、
在web.xml中下面哪一个标签标示servlet的URL映射()(10分) A、mapping B、servlet-url C、url-mapping D、servlet-mapping 参考答案:D
答案说明:
多选题 共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(\方法的作用。(20分)
参考答案:request.getContextPath() 获取根路径; request.getRequestURL(); 获取请求的url;
request.getParameter(\根据name获取value值;
答案说明:request对象是请求对象。请求一次就创建一个request对象,并且存储了请求的信息。所以在表单提交中,我们可以通过request对象获取用户提交的所有信息。 HttpServletRequest类中的常用方法:
request.getContextPath() 获取根路径。
request.getParameter(\根据name获取value值
request.getParameterNames(\根据name获取一组值,如多选框 request.getRequestURL(); 获取请求的url
request.getRequestDispatcher(\路径 \转发是一次请求 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(\ writer.println(\ writer.println(\ writer.println(\ writer.println(\ } //处理post请求 @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
[2]重写2个方法 doGet,doPost [3]在在web.xml中配置
第二天:
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-26 01:49:03.818: W/System.err(1638): android.os.NetworkOnMainThreadException (5)只有在主线程(UI线程)才可以更新UI
09-26 01:51:50.050: W/System.err(1708): android.view.ViewRootImpl$CalledFromWrongThreadException: 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布局文件:
Java代码中:
public class MainActivity extends Activity { private ImageView iv; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // [1]找到我们关心的控件 iv = (ImageView) findViewById(R.id.iv); } // [2]点击按钮进行查看 指定路径的源码 public void click(View v) { new Thread() { public void run() { String path = \ try { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection)
url.openConnection(); conn.setRequestMethod(\ 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=\
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(\\ //开启打电话意图 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,注意需要加入权限:
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、清单文件注册 3、加入权限 android:name=\ 第五天: 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()方法,不在执行 onCreate()方法 判断题 共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对象就被传递到onServiceConnected()方法中,在这个方法中可以通过中间人对象调用服务中的方法。 1、创建Service,并在服务中定义方法 public class TestDemoService extends Service { } 2、定义接口: @Override public IBinder onBind(Intent intent) { } @Override public void onCreate() { } @Override public void onDestroy() { } public void serviceMethod(){ Toast.makeText(this, \我是服务里面的方法\super.onDestroy(); super.onCreate(); return new MyBinder(); } public interface Iservice { } 3、创建Binder类,实现接口 private class Mybinder extends Binder implements IService { } 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 serviceMethod() { } public void serviceMethod(); } } 5、点击按钮,开启服务 public void click(View v){ bindService(new Intent(this,TestDemoService.class), new MyConn(), @Override public void onServiceDisconnected(ComponentName name) { } 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的onChange()方法。此时在onChange()方法里使用ContentResovler可以查询到变化的数据 代码题 共1题满分:20分 8、 请编写一段程序,实现短信备份的功能,并将短信备份到sd卡上。(20分) 参考答案:6院校出题2.txt 下载 答案说明:当点击备份短信的按钮把手机里真实的短信内容以xml的方式备份到sd上. 1 创建一个Android应用 MainActivity 对应的布局文件主要代码 android:onClick=\ android:id=\ android:layout_width=\ android:layout_height=\ android:layout_marginTop=\ android:text=\备份短信\ 2 mainActivity主要实现逻辑如下 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** * 点击 按钮把手机里的短信信息给备份起来 * @param v */ public void click(View v){ //1 把手机里短信信息给查询出来 因为短信的内容 已经通过内容提供者给暴露出来了 所以我们用 内容解析者去查 //2 初始化xml 序列化器 XmlSerializer serializer = Xml.newSerializer(); try { File file = new File(Environment.getExternalStorageDirectory().getPath(),\ FileOutputStream fos = new FileOutputStream(file); //3 初始化序列化器参数 serializer.setOutput(fos, \ //4 开始写xml serializer.startDocument(\ //5开始写xml 的根节点 smss serializer.startTag(null, \ Uri uri = Uri.parse(\ Cursor cursor = getContentResolver().query(uri, String[]{\ while(cursor.moveToNext()){ String address = cursor.getString(0); String date = cursor.getString(1); String body = cursor.getString(2); //6写 sms address body date serializer.startTag(null, \ //7 写 address节点 serializer.startTag(null, \ serializer.text(address); serializer.endTag(null, \ //7 写 date节点 serializer.startTag(null, \ new } } } serializer.text(date); serializer.endTag(null, \//7 写 body节点 serializer.startTag(null, \serializer.text(body); serializer.endTag(null, \serializer.endTag(null, \ // smms结束 serializer.endTag(null, \ serializer.endDocument(); Toast.makeText(getApplicationContext(), \保存成功\} catch (Exception e) { e.printStackTrace(); } 3 清单文件代码如下: android:minSdkVersion=\ android:targetSdkVersion=\ android:icon=\ android:label=\ android:theme=\ android:name=\ android:label=\ 第七天: 1,MediaPlayer播放视频使用( )组件进行显示视频.(10分) A、SurfaceView B、VideoView C、View D、ViewHolder 参考答案:A 答案说明:MediaPlayer播放视频用surfaceView来展示播放视频的内容. 2、使用MediaPlayer播放音乐,以下( )是用于暂停播放音乐的方法.(10分) A、start() B、resume() C、replay() D、pause() 参考答案:D 答案说明:在Android中,MediaPlayer可以用于播放音频和视频的.如果播放视频需要一 个显示视频的组件.pause方法是暂停播放音乐的方法. 3、MediaPlayer播放资源之前,需要调用下列哪个方法完成准备工作( )(10分) A、setDataSource() B、prepare() C、begin() D、pause() 参考答案:B 答案说明:在播放资源之前需要调用prepare()或者prepareAsync()方法,前者是请求本 地资源,后者是请求网络资源。 多选题 共2题满分:20分 4、在Android中,下列关于视频播放的实现描述错误的有( ).(10分) A、使用VideoView播放视频时需要MediaPlayer配合 B、使用SurfaceView播放视频时需要MediaPlayer配合 C、使用VideoView播放视频可以改变播放的位置和大小 D、使用SurfaceView播放视频可以改变播放的位置和大小 参考答案:A,C 答案说明:MediaPlayer可以播放视频,需要一个显示视频的组件可以使用SurfaceView.使 用SurfaceView播放视频可以改变播放的位置和大小. 5、Android中,可以使用以下哪些控件播放视频( )(10分) A、SurfaceView B、ListView C、VideoView D、MediaPlayer 参考答案:A,C 答案说明: 填空题 共1题满分:10分 6、Android播放音频中,使用MediaPlayer播放音频时,调用_____方法指定播放位置。 (10分) 参考答案:seekTo() 答案说明:Android播放音频中,使用MediaPlayer播放音频时,调用seekTo()方法指定 播放位置。 简答题 共1题满分:20分 7、 简单介绍一下使用MediaPlayer播放视频文件的步骤.(20分) 参考答案:1)定义SurfaceView组件。最好在布局文件中实现。 2)创建MediaPlayer对象,并为其加载要播放的视频。 3)将所播放的视频画面输出到SurfaceView中。使用MediaPlayer对象的setDisplay方法,可以将所播放的视频画面输出到SurfaceView。 4)调用MediaPlayer对象的相应方法控制视频的播放。播放play,暂停,pause,停止stop。 答案说明:Android中,MediaPlayer是用于播放音频和视频的。播放视频使用surfaceVi ew组件来显示视频 代码题 共1题满分:20分 8、 请编写一段程序利用VideoView播放一段视频。(20分) 答案说明: 1、编写布局 xmlns:android=\ xmlns:tools=\ android:layout_width=\ android:layout_height=\ tools:context=\ android:id=\ android:layout_width=\ android:layout_height=\ public class MainActivity extends Activity { } @Override protected void onCreate(Bundle savedInstanceState) { } super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); VideoView vv = (VideoView) findViewById(R.id.videoView); vv.setVideoPath(\vv.start(); 第八天: 1,以下关于FragmentTransaction说法错误的是( ).(10分) A、FragmentManager能够实现管理activity中fragment B、通过调用activity的getFragmentManager()取得它的实例 C、fragmentManager.beginTransaction();开启事务 D、使用FragmentTransaction只是为了实现addFragment的功能 参考答案:D 答案说明:获取FragmentTranction不紧可以使用add方法,也可以使用remove等方法. 2、下面哪个方法是用来设置动画重复模式?( )(10分) A、setDuration() B、setFillAfter() C、setRepeatCount() D、setRepeatMode() 参考答案:D 答案说明:补间动画中,setDuration()是设置动画时长,setFillAfter()是设置是否动画 结束停留,setRepeatCount()是设置动画重复次数,setRepeatMode()是设置动画重复模式。 3、关于补间动画说法正确的是( ).(10分) A、补间动画和帧动画类似 B、frameAnimation属于补间动画 C、补间动画不会改变控件真实坐标 D、以上说法都不正确 参考答案:C 答案说明:补间动画不会改变动画真实的坐标.属性动画会改变动画真实的坐标 多选题 共2题满分:20分 4、关于Fragment理解正确的是( )(10分) A、在Android3.0版本开始提供了Fragment技术 B、Fragment主要应用到平板上 C、Fragment 技术在低版本可以使用v4包中Fragment D、Fragment 是单独的一个控件 参考答案:A,B,C 答案说明:虽然Fragment技术是在Android3.0被引入.但是如果想在低版本的手机上使用 Fragment技术可以使用V4包中的Fragment 5、以下关于Frame动画说法正确的是( ).(10分) A、Frame动画可以顺序播放事先准备好的图片 B、Frame动画和补间动画原理一样 C、Frame动画在values目录下创建 D、Frame动画可以设置动画每一帧的执行时间 参考答案:A,D 答案说明:Frame动画就是把一张张图片连续播放产生的动画效果. 填空题 共1题满分:10分 6、Fragment中_____生命周期方法是用来加载Fragment的View. (10分) 参考答案:onCreateView 答案说明:Fragment的onCreateView方法返回一个view,该方法是用于返回Fragment的 内容的 简答题 共1题满分:20分 7、Android中补间动画分为哪几种?特点是什么?(20分) 参考答案:在Android中,提供了4种补间动画,分别是: 透明度渐变动画(AlphaAnimation) 旋转动画(RotateAnimation) 缩放动画(ScaleAnimation) 平移动画(TranslateAnimation) 补间动画不会改变控件真实的坐标. 答案说明:补间动画(Tween Animation)通过对View中的内容进行一系列的图形变换来 实现动画效果,其中图形变化包括平移、缩放、旋转、改变透明度等。 代码题 共1题满分:20分 8、用代码实现点击按钮,使得下方ImageView以自己中心点进行旋转动画,要求动画时长为2秒,重复次数为1次,重复模式为反转模式,旋转角度为180度。(20分) 答案说明:RotateAnimation 用来描述旋转动画,Animation.RELATIVE_TO_SELF表示相对 自己,setDuration()设置时长,setRepeatCount()设置重复次数,setRepeatMode()设置重复模式,调用startAnimation()开启动画。 实现按钮点击事件: public void click(View v){ RotateAnimation ra = new RotateAnimation(0, 180.f), Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); ra.setDuration(2000); ra.setRepeatCount(1); ra.setRepeatMode(AlphaAnimation.REVERSE); } iv_icon.startAnimation(ra); 第九天: 1,GestureDetector中onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)方法中的参数e1代表( )。(25分) A、抬起来的那个事件 B、按下去和抬起来的事件 C、按下去的那个事件 D、以上都不对 参考答案:C 答案说明:e1: 按下去的那个事件,e2: 抬起来的那个事件 velocityX是X轴的速度, 单位是像素,velocityY是Y轴的速度, 单位是像素; 2、若发送一个有序广播,那么调用BroadcastReceiver的()方法可以终止广播,使后面的接收者无法再获取到该广播。(25分) A、setAbortBroadcast() B、setResult() C、abortBroadcast() D、abortBroadcastReceiver() 参考答案:C 答案说明:注意:abortBroadcast()在sdk4.4以前可以使用,sdk4.4之后不能使用。 Context.sendOrderedBroadcast()发送的是有序广播,系统会根据接收者声明的优先级别按顺序逐个执行接收者,前面的接收者有权终止广播(BroadcastReceiver.abortBroadcast()),如果广播被前面的接收者终止,后面的接收者就再也无法获取到广播。 对于有序广播,前面的接收者可以将数据通过setResultExtras(Bundle)方法存放进结果对象,然后传给下一个接收者,下一个接收者通过代码:Bundle bundle = getResultExtras(true))可以获取上一个接收者存入在结果对象中的数据。 填空题 共2题满分:50分 3、使用SmsManager管理器的_____方法发送短信。 (25分) 参考答案:sendTextMessage(..) 答案说明:public void sendTextMessage ( String destinationAddress, 发送短信的地址(也就是号码) String scAddress, 短信服务中心,如果为null,就是用当前默认的短信服务中心 String text, 短信内容 PendingIntent sentIntent, 如果不为null,当短信发送成功或者失败时,这个PendingIntent会被广播出去成功的结果代码是Activity.RESULT_OK,或者错误 : RESULT_ERROR_GENERIC_FAILURE,RESULT_ERROR_RADIO_OFF RESULT_ERROR_NULL_PDU PendingIntent deliveryIntent); 如果不为null,当这个短信发送到接收者那里,这个PendtingIntent会被广播,状态报告生成的pdu(指对等层次之间传递的数据单位)会拓展到数据(\) 手机卫士项目中发短信代码: smsManager.sendTextMessage(safeNumber, null, address, null, null); 4、如果要使用SharePreference保存数据,必须要用_____对象才可以实现数据的读取。 (25分) 参考答案:Editor 答案说明:SharedPreferences.Editor editor = sp.edit(); // 保存数据到SharePreference editor.putString(\ editor.putBoolean(\ //提交数据 editor.commit(); //读取SharePreference的内容 String tel = sp.getString(\没有获取到值\ 第十天: 1,GridView在xml文件中使用()设置列数。(25分) A、android:verticalSpacing B、android:horizontalColumns C、android:horizontalSpacing D、android:numColumns= 参考答案:D 答案说明:在xml文件中设置列数: android:numColumns=\ 在java代码中设置列数: gridView.setNumColumns(num) 填空题 共3题满分:75分 2、Android中将自定义的属性写在_____目录下的_____文件中。 (25分) 参考答案:res/values/,attrs.xml 答案说明:在res/values/attrs.xml 3、在给GridView设置的Adapter中,_____方法获取item的个数,_____方法获取每个item上的内容。 (25分) 参考答案:getCount(),getView(int position, View convertView, ViewGroup parent) 答案说明:getCount() 获取有多少个item条目 getItem(int position) 获取每一个item条目对应的对象 getItemId(int position) 获取每一个item条目对应的id getView(int position, View convertView, ViewGroup parent) 获取每一个item条目真正要显示的内容 4、Xml中使用_____设置gridview的行间距,使用_____来设置gridview的列间距。 (25分) 参考答案:android:verticalSpacing = \答案说明:Xml中设置:android:verticalSpacing = \ ( gridView的行间 距 ) android:horizontalSpacing= \ (gridView的列间距 ) Java代码中设置: mGridView.setVerticalSpacing(20); ( gridView的行间距 ) mGridView.setHorizontalSpacing (20); ( gridView的列间距 ) 第十一天: 1,PackageManager 实例通过调用() 获取应用程序信息。(25分) A、getInfo(..) B、getPackageName() C、getPackage(..) D、getPackageInfo(..) 参考答案:D 答案说明:通过调用getPackageInfo方法获取应用程序信息,其中,参数context.getPa ckageName()代表的是应用程序的包名,参数0代表获取应用程序的基本信息。基本信息包含应用版本名称,应用版本号等。 2、使用ProgressDialog 时调用()方法设置它为圆形转动的进度条 。(25分) A、setStyle(ProgressDialog.STYLE_HORIZONTAL) B、setStyle(ProgressDialog.STYLE_SPINNER) C、setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); D、setProgressStyle(ProgressDialog.STYLE_SPINNER); 参考答案:D 答案说明:(1)设置进度条的形式: setProgressStyle(ProgressDialog.STYLE_SPINNER); 圆形转动的进度条 setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 设置水平进度条 (2)设置是否可以通过点击Back键取消:setCancelable(true); (3)设置在点击Dialog外是否取消Dialog进度条: setCanceledOnTouchOutside(false); (4)设置提示的title的图标,默认是没有的,如果没有设置title的话只设置Icon是不会(5)显示图标的 :setIcon(R.drawable.ic_launcher); (6)设置标题:setTitle(\提示\ (7)让ProgressDialog显示:show(); 填空题 共2题满分:50分 3、使用_____方法给AlertDialog.Builder对话框设置确认按钮, 使用_____方法给AlertDialog.Builder对话框设置取消按钮。 (25分) 参考答案:setPositiveButton(..),setNegativeButton(..) 答案说明:AlertDialog.Builder builder = new AlertDialog.Builder(this); / / 创建对话框 builder.setTitle(\有新版本\设置对话框标题 builder.setMessage(\版本,快来下载吧\//设置对话框上的提示内容 builder.setPositiveButton(\立即更新\new OnClickListener() { //设置确认按钮 @Override public void onClick(DialogInterface dialog, int which) { //在此点击事件中做更新下载相关逻辑 ...... } }); builder.setNegativeButton(\下次再说\new OnClickListener() {//设置取消按钮 @Override public void onClick(DialogInterface dialog, int which) { //在此点击事件中,可取消对话框 dialog.dismiss(); } }); 4、用_____方法设置ProgresssDialog当前进度,_____方法设置ProgresssDialog进度最大值。 (25分) 参考答案:setProgress(),setMax() 答案说明:setMax 设置进度最大值 setMessage 设置dialog上的文字提示信息 setProgress 设置进度条的当前进度 dismiss() 取消Dialog 第十二天:
正在阅读:
android 测试题 答案04-26
广厦楼板、次梁和砖混计算教程11-19
学生的作用和地位11-24
河北省石家庄市2017届高三复习教学质量检测(一)(理数)05-28
诗经中关于亲情的诗句03-23
《功、功率和机械效率》专题复习课教案01-17
女性不孕患者心理健康状况和干预方法10-27
大学无机化学第十一章试题及答案03-31
贺小波《雪》阅读练习及答案11-25
云南世珍泉饮用水有限公司《员工手册》05-19
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 测试题
- 答案
- android