Displaying Bitmaps Efficiently
(高效的展示位图)
Displaying Bitmaps Efficiently
(高效的展示位图)
0.前言
由于本人英语水平有限,非英语专业出身,只是以一名程序员的心态和有限的知识略微的翻译了谷歌开发者文档这一章节。如果翻译的和各位大神所理解的有出入,还请轻喷。毕竟这是本人的处女座嘛。☺(PS:翻译的过程当中,中间可能会忽略一些不太重要的部分,毕竟这篇文章是为了帮助Android开发者在应用中更好的使用Bitmap)
1.内容
学习如何使用一般的技术来处理和载入Bitmap对象,在某种程度上可以使你的UI组件保持回应性,并且可以避免应用程序内存过多的分配。如果你不够仔细,那么bitmaps可能会很快就把消耗掉可用的内存预算,这样会直接导致应用程序崩溃并报出异常:
java.lang.OutofMemoryError: bitmap size exceeds VM budget.
为什么在Android中加载Bitmaps是很棘手的,这里有很多原因:
·移动设备显然地限制了其系统的资源。对于一个单个的应用程序来说,Android设备对其分配的可用的内存可能只有16MB。Android兼容性文档(CDD)3.7章节 说到 对于多种多样的尺寸和分辨率虚拟机分配了所需要的最小的应用内存。应用程序应该充分的利用这有限的内存。然而,请记住许多设备有更高的限制。
- Bitmaps消耗很多内存,尤其是图像,类似于照片。例如,Galaxy Nexus手机上的照相机,拍摄一张照片高达2592*1936像素。如果Bitmap的配置是ARGB_8888(Android 2.3之前默认),然后载入这个图像到内存中大约消耗19MB的内存(2592*1936*4bytes)会立即消耗一些设备上的每个应用的最大限制。
- Android 应用 UI的频繁使用需要一些Bimaps一次性的载入。类似ListView,GridView和ViewPager,一般在多次滑动屏幕的时候就要一次性引用了大量的Bitmaps。
1.1 高效的载入Bitmaps
1.2 在UI线程处理Bitmaps
1.3 缓存Bitmaps
1.4 管理Bitmaps内存
1.5 在UI中展示Bitmaps