位图管理、图片下载缓存、管理图片内存(一) 高效展示图片系列概述
2014-11-12 00:04
483 查看
无意间发现,官方文档中居然有一组完整的实例,详细介绍了android对于图片加载和缓存的解决方法。之前在项目中也用到了图片的批量下载,而且也是像这里的实例一样在GridView或ListView中展示,处理过程也是通过双缓存的方式提高效率,确保应用的UI流畅和内存占用率。看完之后才感觉之前使用的方式还有很多可以改进的地方,同时也为这么优秀的指导文档鲜有人知感到惋惜。所以在此翻译学习,加以巩固。根据文档介绍流程,这里作为一个系列。
概述
学习如何通过一种能够保持UI组件高效响应并避免内存溢出的方式,处理并使用位图对象。如果开发者不注意,位图可能会很快消耗掉应用可获得的预分配内存,从而因为内存溢出而导致应用崩溃。下面是一些导致位图下载问题复杂而棘手的原因分析:
1. 移动设备系统资源有限。android设备中单个应用可能获得只有16M的内存。Android Compatibility Definition Document (CDD), Section 3.7. Virtual Machine Compatibility文档中给出了在不同屏幕尺寸和像素下,应用可以获得的最小内存。应用应该优化到在此内存限度下进行操作。不过许多设备可能设置了更高的单个应用内存占用限度。
2. 位图对象会占用很大的内存,尤其是对于效果逼真的图片。比如,Galaxy Nexus下的相机可以拍出2592*1936像素(5百万)的照片。如果一个位图配置使用ARGB_888(android2.3之前默认的)格式,那么下载这样一张图片会占用19M内存(2592*1936*4字节),在某些设备上很快就会达到单个应用的内存限制。
3. android应用的UI通常会同时请求下载多张位图。比如说ListView,和GridView组件或ViewPager, 通常会存在潜在的图片下载,当用户手指滑动后在屏幕上同时展示多张图片。
先推荐一种很不错的方式:
http://www.xycoding.com/articles/2014/07/29/android-async-images-download/
http://download.csdn.net/download/q541959443/7692557
概述
学习如何通过一种能够保持UI组件高效响应并避免内存溢出的方式,处理并使用位图对象。如果开发者不注意,位图可能会很快消耗掉应用可获得的预分配内存,从而因为内存溢出而导致应用崩溃。下面是一些导致位图下载问题复杂而棘手的原因分析:
1. 移动设备系统资源有限。android设备中单个应用可能获得只有16M的内存。Android Compatibility Definition Document (CDD), Section 3.7. Virtual Machine Compatibility文档中给出了在不同屏幕尺寸和像素下,应用可以获得的最小内存。应用应该优化到在此内存限度下进行操作。不过许多设备可能设置了更高的单个应用内存占用限度。
2. 位图对象会占用很大的内存,尤其是对于效果逼真的图片。比如,Galaxy Nexus下的相机可以拍出2592*1936像素(5百万)的照片。如果一个位图配置使用ARGB_888(android2.3之前默认的)格式,那么下载这样一张图片会占用19M内存(2592*1936*4字节),在某些设备上很快就会达到单个应用的内存限制。
3. android应用的UI通常会同时请求下载多张位图。比如说ListView,和GridView组件或ViewPager, 通常会存在潜在的图片下载,当用户手指滑动后在屏幕上同时展示多张图片。
先推荐一种很不错的方式:
http://www.xycoding.com/articles/2014/07/29/android-async-images-download/
http://download.csdn.net/download/q541959443/7692557
相关文章推荐
- 位图管理、图片下载缓存、管理图片内存 (六) 在UI组件中展示位图
- 位图管理、图片下载缓存、管理图片内存(二)高效下载大图
- 位图管理、图片下载缓存、管理图片内存 (三) 在非UI线程中处理位图
- 位图管理、图片下载缓存、管理图片内存 (五) 管理位图内存
- 位图管理、图片下载缓存、管理图片内存 (四) 缓存位图
- Android官方开发文档Training系列课程中文版:高效显示位图之管理位图内存
- android 优化那些事之图片缓存设计/如何高效的展示图片(三)
- 如何高效使用和管理Bitmap--图片缓存管理模块的设计与实现
- Android官方开发文档Training系列课程中文版:高效显示位图之在非UI线程中处理图片
- Android官方开发文档Training系列课程中文版:高效显示位图之在UI中展示位图
- 高效显示Bitmap+listview冲突解决+图片内存缓存+硬盘缓存
- 详细讲解Android图片下载框架UniversialImageLoader之内存缓存扩展(四)
- Android 图片下载本地内存的缓存方式
- Android 图片下载本地内存的缓存方式
- 新应用知识整理-图片的下载、内存软引用与本地缓存的实现
- 详细讲解Android图片下载框架UniversialImageLoader之内存缓存(三)
- 颠覆我对Android图片的理解《android优化那些事之图片缓存设计/如何高效的展示图片(三)》
- 使用SDWebImage进行异步图片下载和缓存管理
- 如何高效使用和管理Bitmap--图片缓存管理模块的设计与实现
- 高效地加载图片(四) 管理缓存