论文总字数:28002字
摘 要
论文作者签名: 导师签名: 日期:
Android图片加载框架的设计和实现
摘要
图片的加载和展示在移动端开发中是一个十分常见的业务场景。在应用的开发过程中,开发者需要处理对多种来源的图片进行加载,以不同的样式进行图片显示的复杂逻辑,而另一方面图片的加载也给内存和I/O带来了巨大的压力,可能造成程序运行的卡顿、图片加载的缓慢甚至导致应用崩溃,极大地影响用户的使用体验。所以,封装一个对图片的加载和显示进行统一的管理的图片加载框架就是一项极其有必要的工作。
本文围绕应用开发中图片加载的主要场景和所面临性能上的关键问题,介绍了一个Android端上图片加载框架的设计和实现。开发者调用该框架所提供的API就能够完成从本地或者远端拉取图片,以不同的样式对图片进行显示。图片加载框架在设计上采用了多级缓存、对常用对象建立资源池、对图片进行下采样等多种方式来提高性能,让应用的运行更加稳定流畅。
对于用户而言,图片加载框架提高了应用的使用体验。对于开发者而言,该图片加载框架使得图片加载变得透明,将开发者从繁琐的图片加载的相关逻辑中解放出来,提高了应用开发的效率。
关键词:图片加载,Android,缓存设计,内存溢出
THE DESIGN AND IMPLEMENTATION OF AN ANDROID IMAGE LOADING FRAMEWORK
ABSTRACT
The image loading and presentation is a very common business scenario in mobile application developing. When developing an application, developers need to handle complex business logic like loading images from various sources and display them in various style. On the other side, image loading brings great pressure to memory and I/O, making process running in bad condition, even causing application crash, which reduces user experience. As a result, it is an necessary job to build an image loading framework which can deal with most scenarios.
Based on the common cases of image loading and the key problem of performance, this article shows a design and implementation of an image loading framework on Android system. Developers could load images from local or remote and display them in different style using APIs provided by this image loading framework. We design a multi-level cache to increase the speed of image loading, build object pool for commonly used classes to reuse resource, and process and downsample images to shrink memory. All these designs improves the performance of the program.
For users, this image loading framework improves user experience of application. For developers, this image loading framework make the process transparent to invoker, let developers not have to care about the complex logic of image loading, and increase the efficiency of mobile application developing.
Key words: image loading, Android, cache design, out of memory
目 录
摘要 I
ABSTRACT II
目 录 III
第一章 绪论 1
1.1 选题意义 1
1.2 发展背景及现状 1
1.3 论文的主要工作 4
1.4 论文的组织结构 5
第二章 系统分析 6
2.1 需求分析 6
2.1.1 概述 6
2.1.2 功能性需求 6
2.1.3 非功能性需求 7
2.2 方案设计 8
2.2.1 关键问题 8
2.2.2 解决方案 11
第三章 系统实现 13
3.1 概述 13
3.2 主要流程 14
3.3 分模块实现 17
3.3.1 api模块 17
3.3.2 request模块 17
3.3.3 imageholder模块 18
3.3.4 cache模块 19
3.3.5 load模块 20
3.4 本章小结 22
第四章 系统测试 23
4.1 功能测试 23
4.2 性能测试 23
4.2.1 内存占用 24
4.2.2 流畅性 24
4.2.3 加载速度 25
第五章 总结和展望 27
5.1总结 27
5.2改进和展望 27
致 谢 28
参考文献 29
第一章 绪论
选题意义
随着智能手机的普及以及移动互联网的迅速发展,移动端上手机应用也成为日常生活中不可或缺的一部分。而在智能手机市场中,得益于开源以及众多开发者的贡献,Android系统的市场占有率达到八成以上,是目前最主流的移动终端操作系统。然而作为一个拥有众多机型的系统,运行的设备性能也不尽相同,市面上仍然流通着大量性能和内存容量相当有限的低端机。而作为移动端设备,搭载Android系统的硬件的性能也相对于PC端有一定差距。对于移动端应用来说,图片加载和展示一方面是一个十分常见的业务场景,另一方面由于图片常常是大尺寸对象,所以图片加载又是一项极其消耗内存资源和GPU、CPU时间的任务。尤其对于内存相对有限的设备而言,大尺寸图片以及大量图片的加载可能导致内存占用超出系统能够分配的上限而发生应用的崩溃,而繁重的任务也可能让设备陷入持续性的卡顿[1]。所以,开发者希望能有一个图片加载框架来减少图片加载所带来的卡顿和风险。
在应用的开发中,图片加载的途径多种多样,图片可能来源于应用程序包内的资源,本地存储的图片文件,或者是网络,甚至是在内存中构造的字节数组。这些图片的加载往往涉及到I/O等耗时操作,会造成图片在屏幕上展示的延迟,给用户造成不好的体验,另一方面,开发者也需要去管理这些繁琐复杂的多线程逻辑。此外,手机应用中我们常常需要对图片进行圆角或者圆形的裁剪,或者是添加淡入淡出等过渡效果。所以,一个能够封装以上这些加载和展示的繁琐细节,让图片加载过程对开发者透明的图片加载框架能够在很大程度上提高开发者的开发效率,减少应用开发的工作量,让开发者调用简单易用的API就能够完成大多数应用场景下的图片加载和展示。
剩余内容已隐藏,请支付后下载全文,论文总字数:28002字
该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;