🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
本章的主题是Bitmap的加载和Cache,主要包含三个方面的内容。首先讲述如何有效地加载一个Bitmap,这是一个很有意义的话题,由于Bitmap的特殊性以及Android对单个应用所施加的内存限制,比如16MB,这导致加载Bitmap的时候很容易出现内存溢出。下面这个异常信息在开发中应该时常遇到: java.lang.OutofMemoryError: bitmap size exceeds VM budget 因此如何高效地加载Bitmap是一个很重要也很容易被开发者忽视的问题。 接着介绍Android中常用的缓存策略,缓存策略是一个通用的思想,可以用在很多场景中,但是实际开发中经常需要用Bitmap做缓存。通过缓存策略,我们不需要每次都从网络上请求图片或者从存储设备中加载图片,这样就极大地提高了图片的加载效率以及产品的用户体验。目前比较常用的缓存策略是LruCache和DiskLruCache,其中LruCache常被用做内存缓存,而DiskLruCache常被用做存储缓存。Lru是Least Recently Used的缩写,即最近最少使用算法,这种算法的核心思想为:当缓存快满时,会淘汰近期最少使用的缓存目标,很显然Lru算法的思想是很容易被接受的。 最后本章会介绍如何优化列表的卡顿现象,ListView和GridView由于要加载大量的子视图,当用户快速滑动时就容易出现卡顿的现象,因此本章最后针对这个问题将会给出一些优化建议。 为了更好地介绍上述三个主题,本章提供了一个示例程序,该程序会尝试从网络加载大量图片并在GridView中显示,可以发现这个程序具有很强的实用性,并且其技术细节完全覆盖了本章的三个主题:图片加载、缓存策略、列表的滑动流畅性,通过这个示例程序读者可以很好地理解本章的全部内容并能够在实际中灵活应用。