View的Cache 机制
View组件显示的内容可以通过cache机制保存为bitmap, 主要有以下方法:
void setDrawingCacheEnabled(boolean flag),
Bitmap getDrawingCache(boolean autoScale),
void buildDrawingCache(boolean autoScale),
void destroyDrawingCache()
我们要获取cache首先要通过setDrawingCacheEnable
方法开启cache,然后再调用getDrawingCache
方法就可以获得view的cache图片了。
buildDrawingCache
方法可以不用调用,因为调用getDrawingCache
方法时,若果cache没有建立,系统会自动调用buildDrawingCache
方法生成cache。
更新Cache
若想更新cache, 必须要调用destoryDrawingCache
方法把旧的cache销毁,才能建立新的。
当调用setDrawingCacheEnabled
方法设置为false, 系统也会自动把原来的cache销毁。
另外,ViewGroup在绘制子view时,也提供了两个方法
void setChildrenDrawingCacheEnabled(boolean enabled)
setChildrenDrawnWithCacheEnabled(boolean enabled)
setChildrenDrawingCacheEnabled
方法可以使viewgroup里所有的子view开启cache;
setChildrenDrawnWithCacheEnabled
使在绘制子view时,若该子view开启了cache, 则使用它的cache进行绘制,从而节省绘制时间。
清理缓存
获取cache通常会占用一定的内存,所以通常不需要的时候有必要对其进行清理,通过destroyDrawingCache
或setDrawingCacheEnabled(false)
实现。