注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好。

原文链接:http://developer.android.com/training/displaying-bitmaps/index.html


学习如何使用常规的技术来加载和处理的Bitmap对象,可以让你的UI组件保持响应并避免超过了你的应用的记忆限制。如果你不足够小心,位图资源会迅速消耗你的可用存储。最终导致应用崩溃,并抛出错误:java.lang.OutofMemoryError: bitmap size exceeds VM budget

有下面一些原因解释为什么在你的Android应用中加载位图会比较复杂:

  • 移动终端通常都只有有限的系统资源。Android设备中的每个应用只能拥有16MB的存储空间。在Android Compatibility Definition Document的第3.7节:《Virtual Machine Compatibility》中给出了不同屏幕尺寸和密度所需要的最小应用存储空间。应用必须在该存储限制下将性能表现尽可能的优化。不过,记住许多设备都会给每个应用分配高于该限制的内存空间。
  • 位图会消耗大量的内存,尤其是内容丰富的图片,如照片。例如,Galaxy Nexus的相机所拍摄的照片拥有2592x1936数量的像素(500万像素)。如果位图的设置使用的是ARGB_8888(Android 2.3之后的默认配置),那么加载这个图像就需要消耗19MB的内存(2592*1936*4字节),这会迅速消耗在一些设备上每个应用的内存限制。
  • Android应用的UI经常会要求一次性加载多个位图。一些组件诸如:ListViewGridViewViewPager通常在屏幕上会一次性包含多个位图,并后很多未显示在屏幕上的位图缓存,它们会随着用户手指的操作而随时出现。

课程:

【Android Developers Training】 56. 更效率地加载大图片

【Android Developers Training】 57. 在UI线程之外处理图像

【Android Developers Training】 58. 缓存位图

【Android Developers Training】 59. 管理图片存储

【Android Developers Training】 60. 在你的UI中显示位图


代码样例:

BitmapFun.zip


视频(On YouTube):

DevBytes: Bitmap Allocation

DevBytes: Making Apps Beautiful - Part 4 - Performance Tuning

【Android Developers Training】 55. 序言:高效显示位图的更多相关文章

  1. 【Android Developers Training】 60. 在你的UI中显示位图

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  2. 【Android Developers Training】 58. 缓存位图

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  3. 【Android Developers Training】 105. 显示一个位置地址

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  4. 【Android Developers Training】 102. 序言:让你的应用获知地点

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  5. 【Android Developers Training】 101. 显示快速联系人挂件(Quick Contact Badge)

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  6. 【Android Developers Training】 97. 序言:访问通讯录数据

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  7. 【Android Developers Training】 83. 实现高效网络访问来优化下载

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  8. 【Android Developers Training】 82. 序言:传输数据时减少对电池寿命的影响

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  9. 【Android Developers Training】 19. 序言:通过Fragments构建动态UI

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

随机推荐

  1. php的文件引用

    最近研究公司代码时发现了set_include_path(dirname(__FILE__));这样一行代码,在网上查了些资料,才把这个方法的作用弄清楚. 首先,dirname(__FILE__)这个 ...

  2. Redis入门学习

    一.摘要 二.五种数据类型的基本命令操作 三.Redis连接池 四.普通同步方式 五.事务方式(Transactions) 六.管道(Pipelining) 七.管道中调用事务 八.分布式直连同步调用 ...

  3. JEESZ-kafka集群安装

     1. 在根目录创建kafka文件夹(service1.service2.service3都创建) [root@localhost /]# mkdir kafka   2.通过Xshell上传文件到s ...

  4. Fast Walsh-Hadamard Transform——快速沃尔什变换

    模板题: 给定$n = 2^k$和两个序列$A_{0..n-1}$, $B_{0..n-1}$,求 $$C_i = \sum_{j \oplus k = i} A_j B_k$$ 其中$\oplus$ ...

  5. error C2039: 'SetDefaultDllDirectories'错误解决办法

    使用VS2013+WDK8.1+Win7开发UMDF驱动,当使用了CComPtr类,包含了atlcomcli.h头文件却报错,错误如下: Error 3 error C2039: 'SetDefaul ...

  6. 【JAVAWEB学习笔记】24_filter实现自动登录和解决全局的编码问题

    过滤器Filter 学习目标 案例-自动登录 案例-解决全局的编码 一.过滤器Filter 1.filter的简介 filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目标 ...

  7. [Open Source] RabbitMQ 高可用集群方案

    简介 RabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言,但其本身并不支持负载均衡. Rabbit模式大概分为以下三种:单一模式.普通模式.镜像模式 Rabb ...

  8. 把ipad作为电脑的第二显示器

    需要:1,iPad          2,ios端需要软件idisplay(在pp助手里搜索idisplay下载即可)       3,windows需要软件iDisplay(链接http://www ...

  9. 聊一聊JQ中delegate事件委托的好处

    下面举个例子 我们希望通过点击使得点击的li标签变红 <body style="height:2000px;"> <ul> <li>1111&l ...

  10. cursor 属性

    鼠标 样式 default 默认光标(通常是一个箭头) auto 默认.浏览器设置的光标. crosshair 光标呈现为十字线. pointer 光标呈现为指示链接的指针(一只手) move 此光标 ...