00:01
看这。在这里面呢,我们虽然说已经做出来了,但现在的效率呢,是极其低下的。啊,我来验证一下,我在这里面呢,写一个打印输出。上午跟大家说过一个概念,它是不是你是不是又有缓存了,是吧,来。嗯,把这一个position。给它输出一下,还一个刚才是不是还有它,我们不知道是什么东西,对不对,可以把它。也输出一下。好了吧。好,呃,还有一个可以给大家打印一下,这个呢,重要性倒不是特别大,但是也给大家看一下。好吧,来,我们来看一下啊。
01:04
走。看这里啊。现在已经显示出来了,我这个这样啊。我先呢,把这一些先先给他清了,我退出一下啊,退出一下以后呢,我再进来。再看。二。在这在我们去显示之前,是先他要去统计个数啊。它调用的次数,而且还比较多,因为它不可能不是在一个地方需要用啊,好的地方需要用这个方法啊,这个我们只要知道它被调用过就OK了。下面打开。Position等于零的时候,Come what of you等于。空啊是吧,现在显示了123456。啊,看了六个,也就是说我是不是加载了六次布局啊。
02:05
好,你来看1234566个吧,我们前面说过,最多加了几个。是不是七个呀。来。看一下我把这里前面的删掉啊。很有意思的事情来了,来。看,此时。加了没有。是不是加下来第七个下面为六嘛,零到六不七个吗。好。那关键我再往下滑呢,大家一定要盯着那边大家看诶。这个时候我显示了第几个。第第八个已经出来了。对吧,大概啊,我就我就停在这里不动了,那你来看第八个在哪来的呢。我问一下大家,我看到第八个的时候,你说第一个还能看得见吗?还有可能看得见吗?不可能看见了。
03:01
对吧,你来看。他说这个of you,此时此刻,他是一个什么不一样?哎,为什么是个线性布局呢。啊,你从中可以推测一下,他传给你的这个convert view是哪一个视图。对不对。是哪个,为什么是线性布局呢。就是因为它是我们那个看到这里面。就有一个这样的一个问题,大家看。啊,开始了显示好几个对吧?啊,一上来显示的是一到七,那最多的时候是不能显示八个啊,那显示八个的时候大家看。当午。看不我有可能是不是往上滑,往上滑那个一是不是有可能进入看不见的区域啊。
04:03
那当一看不见的时候。那就齐将看到谁了呀?对他的一种情况来说,应该要你要即将看到九吧,是即将要看到久了。对吧。那齐家看到酒了以后,我得准备一个酒啊,怎么样准备一个酒啦。啊,我是不是得在这里面准备一个那个一个item呀的视图对象从哪来呀,我要重新的去加载吗。不用,其实完全可以利用它,是不是那看不见的那个。那个事实对象只是我需要重新设置一下数据。那数据还能用以前的吗?不然。视图对象可以复用,但是数据不能复用。其实这个系统吧,它已经有缓存了,只是你说我们现在用它的缓存了吗。
05:05
没有,我们是不断的去加载布局啊。大家看啊,让大家看一个效果,大家看的啊。With it。为什么呀?我一下子就把他搞崩溃了,叫out of memory怎么样?是不是内存溢书啊?为什么内存溢书啊?我是不是不断的在加载啊,不断的加载布局的话,那内存里面那个是非啊,是不是越来越多。最终直接就把内存搞崩溃了。那我如何来避免呢?你这个地方你得你得知道它到底有没有,他要有的话,我们就可以利用它的缓存,对不对,相当于这个里面就是啊复用的可复用。
06:10
嗯,复用的。嗯,可复用的缓存item布局对象,Item视图对象嘛,这个地方要跟大家强调一个事。上的时候可能为空吧。是吧,一上来的时候开始哪有哪有缓存的呀,对不对,最先初始化显示的时候有缓存的吗。没有啊,记住了出嗯,前多少个是没有的。N加一个还记得吧,前N加一个是为什么是为空啊,为空后面的是不是又可以复用了呀。那我如何来实现复用?
07:00
其实非常的简单。就是要判断一下,如果啊,没有什么呢。复用的对吧,没有复用的,那没有复用的怎么样判断呢?Can what you。如果它等于空,我就说明没有吧。没有被复用的啊,没有复用的,那我如果他得空我才去加载。那加载以后我就这么做吗?这么做的话,那看不到you了呀。一般我都是这么做的,返回看,What of you。给它复制为convert view。去通过convert又去找。能看到吧。好大看着我啊。我只在这个里面来看这里,我在它里面写一些打印。
08:05
啊,把这一个给它去掉,我们现在就观察。E掉多少次?If掉多少次,就代表我加载多少次布局吧。好了,来看一下啊。找一下。嗯,先把这一个给它删掉。退出好啦。看它。这一个掉了几次。60是吧,看后面。刷刷刷刷刷我刷我刷我刷我刷我刷。还有吗?是没有吧。啊,你再怎么着,它也只会去加载什么,相当于N加一次。对不对。其实简单,其实做的是非常简单,就不加了一个条件判断。
09:03
是这个意思吧,嗯,这样就提高了很大的一个效率的问题啊。这个还不是最终的啊,是暂时我们先这么写的啊,后面呢,还有更优化的一些版本啊。
我来说两句