Android Developers:有效地显示位图

这个章节包含了一些加载和处理位图的常用技术,它们保持你的用户接口(UI)组件可保持响应和避免超出你的程序的内存限制。如果你不小心,位图会很快耗尽你的可用内存预算,由于这个令人畏惧的异常,导致应用程序崩溃:

     java.lang.OutofMemoryError:bitmap size exceeds VM budget.

为什么在你的应用程序中加载位图是非常复杂的,有许多原因:

  • 手机设备普遍具有有限的系统资源。Android设备可以为每个单独的程序分配至少16MB的可用内存。Android Compatibility Definition Document(CDD)文档,3.7.Virtual Machine Compatibility章节给出了各种屏幕大小和分辨率的应用程序最小内存要求。应用程序应该被优化以运行在最小内存限制中。然而,请记住许多设备配置了更高的限制。
  • 位图占据了许多资源,尤其是丰富的图片,如照片。例如,在Galaxy Nexus照相机拍照高达2592 * 1936像素(5百万像素)。如果位图设置使用ARGB_8888(Android 2.3之前默认)那么将这个图片加载到内存中将要消耗19MB内存(2592*1936*4byte2),在某些设备上立刻超过每个程序的内存限制。
  • Android应用程序的UI经常需要一次性加载几张位图。例如ListView,GridView和ViewPager控件,它们通常一次性在屏幕上显示多张位图和更多显示的可能不在屏幕中,手指轻轻滑动后准备显示的位图。

课程

有效的下载大的位图
这节课程将引导你如何不超过每个应用的内存限制来编码大的位图。
脱离UI线程处理位图
位图的处理(调整大小,从远程源下载等)不应该发生在主UI线程中。这个课程将引导你使用AsynTask在一后台线程处理位图,并介绍如何处理并发性问题。
缓存位图
这节课程将引导你,在加载多个位图的时候,使用内存和磁盘位图缓存去提高你的UI的响应性和流动性。
在你的UI中显示位图
这节课程将所以的知识融合在一起,向你展示如果利用后台线程和位图缓存,向如ViewPager和GridView控件中加载多个位图。

文档位置:Developers/Training/Advanced Tr
     

你可能感兴趣的:(Android Developers:有效地显示位图)