第9章 网络编程
一、填空题
1、Android系统提供了多种网络通信方式,包括Socket通信、HTTP通信、URL通信和WebView。 2、当客户端与服务器端建立连接后,想服务器端发送的请求,被称HTTP请求。 3、Android客户端访问网络发送HTTP请求的方式一般有两种,HttpURLConnection和HttpClient。 4、与服务器交互过程中,最常用的两种数据提交方式是GET和POST。
5、为了根据下载进度实时更新UI界面,需要用到Handle消息机制来实现线程间通信。 二、判断题
1、HttpURLConnection是一个标准的Java类。 √ 2、使用HttpClient访问网络时,不需要创建HttpClient对象。 × 3、GET方式是以实体的方式得到由请求URL所指向的资源信息。 √ 4、HttpClient是对AsyncHttpClient的再次包装。 × 5、在多线程下载中,每个线程必须要下载对应的模块,然后将这些模块顺序序组组合。 √ 三、选择题
1、下列选项中,不属于Handler机制中的关键对象是(A)。
A、Content B、Handler C、MessageQueue D、Looper 2、下列通信方式中,不是Android系统提供的是(D)。
A、Socket通信 B、HTTP通信 C、URL通信 D、以太网通信 3、关于HttpURLConnection访问网络的基本用法,描述错误的是(C)。
A、HttpURLConnection对象需要设置请求网络的方式 B、HttpURLConnection对象需要设置超时时间
C、需要通过new关键字来创建HttpURLConnection对象 D、访问网络完毕需要关闭HTTP链接
4、下列选项中,不属于AsyncHttpClient特点的是(D)
A、发送异步HTTP请求
B、HTTP请求发生在UI线程之外 C、内部采用了线程池来处理并发请求 D、自动垃圾回收
5、下列选项中,关于GET和POST请求方式,描述错误的是(B)。
A、使用GET方式访问网络URL的长度是有限制的
B、HTTP协议规定GET方式请求URL的长度不超过2K C、POST方式对URL的长度是没有限制的
D、GET请求方式向服务器提交的参数跟在请求URL后面
四、简答题
1、请简述使用HTTPClient访问网络的步骤。
使用HttpClient访问网络的步骤如下: 1) 创建HttpClient对象;
2) 指定访问网络的方式,创建一个HttpPost对象或者HttpGet对象;
3) 如果需要发送请求参数,可调用HttpGet、HttpPost都具有的setParams()方法。对于
HttpPost对象而言,也可调用setEntity()方法来设置请求参数;
4) 调用HttpClient对象的execute()方法访问网络,并获取HttpResponse对象; 5) 调用HttpResponse.getEntity()方法获取HttpEntity对象,该对象包装了服务器的响应
内容。也就是我们所请求的数据。
2、请简述Handler机制4个关键对象的作用。
Handler机制四个关键对象的作用如下:
1) Message
Message是在线程之间传递的消息,它可以在内部携带少量的信息,用于在不同线程之间交换数据。Message的what字段可以用来携带一些整型数据,obj字段可以用来携带一个Object对象。 2) Handler
Handler顾名思义就是处理者的意思,它主要用于发送消息和处理消息。一般使用Handelr对象的sendMessage()方法发送消息,发出的消息经过一系列的辗转处理后,最终会传递到Handler对象的handlerMessage()方法中。 3) MessageQueue
MessageQueue是消息队列的意思,它主要用来存放通过Handler发送的消息。通过Handler发送的消息会存在MessageQueue中等待处理。每个线程中只会有一个MessageQueue对象。 4) Looper
Looper是每个线程中的MessageQueue的管家。调用Looper的loop()方法后,就会进入到一个无线循环中。然后每等发现MessageQueue中存在一条消息,就会将它取出,并传递到Handler的HandlerMessage()方法中。此外每个线程也只会有一个Looper对象。在主线程中创建Handler对象时,系统已经为我们创建了Looper对象,所以不用手动创建Looper对象,而在子线程中Handler对象,我们需要调用Looper.loop()方法开启消息循环。
第10章 高级编程
一、填空题
1、对图片添加旋转、缩放等特效需要使用Matrix类。 2、要注册各种传感器需要先获取SensorManager对象。
3、绘制图像需要使用多个类,分别是Bitmap、BitmapFactory、Paint、Canvas。
4、Fragment与Acitivity相比多出的几种生命周期方法是onAttach()、onCreateView()、onActivityCreate()、onDestroyView()、onDetach()。
5、动画中有一种Frame逐帧动画,通过顺序播放排列好的图片来实现动画效果,类似电影。 二、判断题
1、只要是Android设备就可以使用任何传感器。 × 2、Fragment与Acitivity相似,它们的生命周期也相同。 × 3、每次启动Fragment都会执行他的onGreate方法。 √ 4、要使用图片旋转可以使用Matrix类中的setRotate()方法。 √ 5、Android中开发音乐播放器可以用MediaPlayer,开发视频播放器只能用VideoView。 × 三、选择题
1、使用MediaPlayer播放保存在SD卡上的.mp3文件时(BC)。
A、需要使用MediaPlayer.create方法创建MediaPlayer。 B、直接new MediaPlayer即可
C、直接使用setDataSource方法设置文件源 D、直接调用start方法,无须设置问文件源 2、下列不属于补间动画相关的类是(B)。
A、TranslateAnimation B、FrameAnimation C、RotateAnimation D、AlphaAnimation 3、关于Fragment说法正确的是(C)。
A、使用Fragment必须在布局文件中加入
B、Fragment有自己的界面和生命周期,可以完全替代Activity C、Fragment的状态跟随它所关联的Activity的状态改变而改变 D、当Fragment停止时,与它关联的Activity也会停止
4、MediaPlayer播放资源前,需要调用(B)方法完成准备工作。
A、setDataSource B、prepare C、begin D、pause 5、下面属于Android动画分类的有(AB)。
A、Tween B、Frame C、Draw D、Animation
四、简答题
1、Android中有几种动画?它们的区别是什么?
Android中有两种动画,分别如下: 1) Tween动画
通过对View中的内容进行一系列的图形变换来实现动画效果,其中图形变化包括平移、缩放、旋转、改变透明度等。补间动画的效果可以通过XML文件来定义也可以通过编码方式来实现,通常情况下以XML形式定义的动画都会放置在程序的res/anim(自定义的)文件夹下。 2) Frame动画
逐帧动画就是按顺序播放事先准备好的静态图像,利用人眼的“视觉暂留”原理,给用户造成动画的错觉。放胶片看电影的原理与逐帧动画的原理是一样的,它们都是一张一张地播放事先准备好的静态图像。
2、简单描述Fragment的生命周期状态。
Fragment的生命周期有三种状态,具体如下: 1)运行状态
当一个Fragment是可见的,并且它所关联的Activity正处于运行状态,那么该Fragment也处于运行状态。 2)暂停状态
当一个Activity进入暂停状态(另一个未占满屏幕的Activity并添加到了栈顶时),与它相关联的可见Fragment也会进入暂停状态。 1) 停止状态
当一个Activity进入停止状态时,与它相关联的Fragment就会进入到停止状态。或者通过调用FragmentTransaction的remove()、replace()方法将Fragment从Activity中移除。如果在事务提交之前调用addToBackStack()方法,这时的Fragment也会进入到停止状态。