scrollingCache?

任何人都可以解释在Android中scrolling cache的含义。 我偶然发现了这个词,但无法在android官方网站或网页上找到解释。

我能找到的是我怎样才能打开/关闭它。

谢谢。


滚动缓存基本上是一个绘图缓存。

在android中,您可以要求View将其绘图存储在称为绘图缓存(基本上是位图)的缓存中。 默认情况下,绘图缓存因为占用内存而被禁用,但您可以要求View明确通过setDrawingCacheEnabled或通过硬件层(setLayerType)创建一个。

那为什么它有用? 因为使用绘图缓存可以使动画平滑,而不是在每一帧重绘视图。

这种类型的动画也可以是硬件加速的,因为渲染系统可以将该位图作为纹理(如果使用硬件层)并将其上传到GPU并对其进行快速矩阵处理(如更改alpha,平移,旋转)。 比较一下,在每帧你正在重画(onDraw被调用)的动画。

在列表视图的情况下,当你通过掷骰子滚动时,实质上是动画列表的视图(将它们向上或向下移动)。 该列表视图使用其可见子项的绘图缓存(以及边缘附近的一些可能的可见子项)快速为其设置动画。

使用图形缓存有缺点吗? 是的,它消耗内存,这是为什么默认情况下,它在View中关闭。 在ListView的情况下,只要您触碰ListView并稍微移动(以区分滚动的抽头),就会自动为您创建缓存。 换句话说,只要ListView认为您要滚动/跳动,它就会为您创建滚动缓存,以便为滚动/跳动动画制作动画。


在“listView的世界”讲座中详细解释了scrollCache。

它基本上缓存滚动本身,以便它将移动位图,但根据我的经验,它实际上使事情变得更慢,并且没有什么特别的记忆。

至少对于listView,默认情况下启用scrollingCache。 这就是为什么如果性能对你很重要,你应该考虑禁用它。


我想你在谈论以下内容:

想象一下50件物品的清单,其中只有10件物品可见。 Android会将下一个和上一个(估计)的5个项目缓存在列表项中。

当你开始滚动列表时,它将使用不可见的项目视图,使用ArrayAdapter的函数getView()。例如,如果您滚动到顶部,它将在底部显示一个视图,并将它放在最上面的新数据。

因此,滚动缓存是可见项目上方/下方的下一个和上一个项目。

链接地址: http://www.djcxy.com/p/24185.html

上一篇: scrollingCache?

下一篇: Automatic popping up keyboard on start Activity