ListView的缓存机制

说到ListView当然少不了Adapter了,Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面的额时候,都会调用AdaptergetView()这个方法返回一个View。这样,ListView中有多少项,就应该调用多少次getView()方法去绘制每一项的界面。如果项数少的时候(几十行),这是没问题的。但是如果有一万行,一百万行,那么就会出现问题了,它会占用系统极大的内存,所以必须采用性能优化的方法。

 

先说一下ListView的工作原理:ListView工作的时候,会针对每个item,要求Adapter对象返回一个ViewgetView()方法),也就是说,Listview在开始绘制的时候,系统首先调用getCount(),根据其返回值得到ListView的长度,然后根据这个长度,调用getView()一行一行的绘制ListView的每一项。

 

搞清楚了ListView的工作原理,我们就可以来看ListView的缓存机制了,如下:

 

1)如果有几千,几万行甚至更多的代码的时候,其中只有课件的项存在于内存中,其他的都在Recycler中,RecycleAndroid中专门用来处理缓存的组件。

 

2ListView先通过getView()方法请求一个View,然后请求其他可见的View。这时convertViewgetView中是空的。

 

3)当列表第一项滚出屏幕,并且一个新的项从屏幕低端上来时,ListView会再请求一个View,这时,convertView已经不是空值了,它的值是滚动出屏幕的第一项,之后只需要设定新的数据,然后返回convertView即可,而不必重新创建一个View

猜你喜欢

转载自aijuans.iteye.com/blog/2165786