文档章节

位图管理、图片下载缓存、管理图片内存(一) 高效展示图片系列概述

k
 kim366
发布于 2016/05/13 19:36
字数 618
阅读 6
收藏 0

        无意间发现,官方文档中居然有一组完整的实例,详细介绍了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

        

        

本文转载自:http://blog.csdn.net/oyangyujun/article/details/41024475

共有 人打赏支持
k
粉丝 1
博文 129
码字总数 0
作品 0
朝阳
【Google官方教程】前言:高效的Bitmap显示

转载声明:Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-) http://my.oschina.net/ryanhoo/blog/88153 译者:Ryan Hoo 来源:https://developer.andro...

RyanHoo
2012/11/09
0
11
Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类)

最新内容建议直接访问原文:Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类) 介绍总结的一些android公共库,包含缓存(图片缓存、预取缓存)、公共View(下拉及底部...

Trinea
2013/07/28
839
1
总结的一些android公共库

最新最准确内容建议直接访问原文:Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类) 介绍总结的一些android公共库,包含缓存(图片缓存、预取缓存)、公共View(下拉...

Trinea
2012/07/16
0
1
FastImageCache 架构分析

原文 文章介绍 本文章注重分析 FastImageCache 这个 Github 第三方图片IO库的架构和部分分析等等。 对于 FastImageCache 很多同学或多或少都会听过,但是网上很多人说这是一个网络图片库,我...

葱神大大
06/22
0
0
Android图片缓存之初识Glide

前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架。技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自...

丁佳辉
2017/10/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

创建第一个react项目

sudo npm i -g create-react-app@1.5.2 create-react-app react-app cd react-apprm -rf package-lock.jsonrm -rf node_modules #主要是为了避免报错npm installnpm start......

lilugirl
今天
1
0
在浏览器中进行深度学习:TensorFlow.js (八)生成对抗网络 (GAN)

Generative Adversarial Network 是深度学习中非常有趣的一种方法。GAN最早源自Ian Goodfellow的这篇论文。LeCun对GAN给出了极高的评价: “There are many interesting recent development...

naughty
今天
0
0
搬瓦工镜像站bwh1.net被DNS污染,国内打不开搬瓦工官网

今天下午(2018年10月17日),继搬瓦工主域名bandwagonhost.com被污染后,这个国内的镜像地址bwh1.net也被墙了。那么目前应该怎么访问搬瓦工官网呢? 消息来源:搬瓦工优惠网->搬瓦工镜像站b...

flyzy2005
今天
3
0
SpringBoot自动配置

本篇介绍下,如何通过springboot的自动配置,将公司项目内的依赖jar,不需要扫描路径,依赖jar的情况下,就能将jar内配置了@configuration注解的类,创建到IOC里面 介绍下开发环境 JDK版本1.8 spr...

贺小五
今天
5
0
命令行新建Maven多项目

参考地址 # DgroupId 可以理解为包名# DartifactId 可以理解为项目名mvn archetype:generate -DgroupId=cn.modfun -DartifactId=scaffold -DarchetypeArtifactId=maven-archetype-quickst......

阿白
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部