Android网络通信论文

时间:2022-07-30 05:47:20

Android网络通信论文

1.网络请求管理层

在这一部分里,为了提高整个框架的效率,Volley采取了基于线程池的多线程并发的策略。多线程策略包括线程的创建和线程来源两个维度,线程的创建有三种方式,分别是“一客户一线程、一请求一线程、一对象一线程”,线程的来源主要有“在需要时创建、线程池维护”两种方式。多线程方式创建的多个线程在并发操作的时候就构成了线程池,线程池是用来管理多个线程的,线程池的性能受用户并发数、请求时间以及线程的数目影响[4]。Volley利用这种思想,将线程池分为主线程,缓存线程和网络请求线程。并将各类HTTP请求统一抽象成Request(请求)类,通过队列进行管理。主线程只有一个,用于Volley实体的管理,并负责创建管理请求队列。从整体上来看,主线程是整个框架的管理者。缓存线程也只有一个,用于管理请求结果的缓存。不论是JSON格式,String格式或是图片格式的请求,他们共同点是都有一个请求的地址,而请求结果都是以编码的形式进行返回,这样的信息格式适合于使用Map来进行存储。通过请求地址生成map的key,将请求结果作为value。Volley就是使用这样的方式进行网络请求的缓存。网络请求线程可以有多个,创建Volley实例对象的时候可以设置这个线程的个数。网络请求的线程并行的访问请求队列中的网络请求,完成整个请求的执行过程。对于需要缓存的请求,网络请求及请求结果交由缓存线程进行处理。

2.工具类部分

在网络数据的传输过程中,JSON格式数据的传输往往会是开发者的首选。JSON易于阅读和编码,且它是JavaScript规范的子集,能被支持JavaScript的浏览器支持,相比XML减少了解析时带来的性能和兼容问题,这些特性使JSON成为理想的数据交换语言[5]。所以在工具类部分里,Volley提供了针对JSON格式的请求的扩展,将Request类分别扩展为JsonObjectRequest(JSON对象请求)类,JsonArrayRequest(JSON数组请求)类。另外还将其扩展为StringRequest(字符串请求)和ImageRequest(图像请求)类,这样开发者可以根据自己的需求来选择使用这些相应的请求类,而Volley自身会承担请求返回结果的格式转换,整个的过程对开发者透明。第二是建立了网络图片的加载管理类——ImageLoader,其使用了ImageRequest作为获取网络图片的基本方法,并将每一个网络图片封装在ImageContainer(图片容器)类中。众所周知,Android系统下图片的存储多采用Bitmap的形式[6]。所以在ImageContainer中包含了图片的请求地址,图片的宽度和高度和包含图片数据的Bitmap。如今的Android应用开发中,Android手机在系统加载多个图片和大图片会耗费大量内存,就位图(bitmap)而言,假如其内存占用超过了一定数值,就会出现OutOfMemory(内存溢出)错误[7]。所以能否对图片的位图(bitmap)进行高效的缓存和管理已经是每一个Android开发者所面临的最关键问题之一。为了解决这个问题,ImageLoader在每成功进行了一次网络图片的请求之后,会将生成的图片容器交由缓存线程,缓存线程将图片的请求地址和图片的宽高信息作为key,将图片的内容的Bitmap作为value存储到缓存的Map里。而在进行每次图片请求之前,将图片地址和宽高信息作为key,通过缓存线程去查询缓存,如果找到则可以直接通过本地进行加载,否则就进行新的网络图片请求。第三是建立了新的Android的视图控件NetworkImageView,其继承于ImageView,但是其主要应用于显示网络图片。其对于ImageView添加了对应的ImageLoader进行管理。这样避免了网络图片的重复获取,尤其在涉及到屏幕旋转的网络图片展示的时候,节省了资源。

3.Volley框架的接入使用

Volley框架要求开发者使用Android2.2以上的开发平台。开发者接入使用的方法也较为简单。首先下载其开源库,并将该库引入到工程中,与自己的工程一同编译。然后对于普通需求的开发者,开发者只需要在自己的网络请求模块中添加Volley的单例管理模式的实体类,并获取其中的Requst队列,将自己的网络请求放入队列中,并扩展请求的Response接口的即可满足需求。如果开发者有着更高的需求,Volley对于重新策略,线程池的大小设置,缓存策略均提供了接口,可以给开发者进行扩展。

4.Volley与其他框架的比较

本文将把Volley网络通信框架和时下比较广泛使用的AsyncHttpClient框架和用于获取网络图片Universal-Image-Loader框架进行了比较。通过下面的表格,我们可以清楚的看到比较的结果。

5结论

本文对Android网络通信框架Volley进行了架构和功能上的分析。并将其与其他两种网络通信框架做出了功能和性能上的比较。从比较结果不难看出,虽然Volley在空间上占用较大,但其提供了更完善的功能。提高了整个框架下网络请求的并行能力,并且稳定性得到了良好的保障。所以Volley是一个性价比相对较高的网络通信框架,值得在Android应用程序的开发中进行使用。

作者:孟远 单位:北京邮电大学

上一篇:新媒体下学生管理论文 下一篇:独立学院教学中学生管理论文