RecyclerView和ViewPager内存管理的区别
之所以想到写本文,是因为看到鸿洋微博的RecyclerView实现抖音效果的文章。里面讲了ViewPager实现会OOM,RecyclerView不会。 第一个get的点,RecyclerView打造成ViewPager,这个就不用多说了,SnapHelper封装了这一切 第二个get的点,为什么RecyclerView不会OOM呢? 这需要掌握RecyclerView一些浅显的原理。RecyclerView除了界面上显示的item,还有上下各2个供4个的预加载item。所以他内存中有 当前界面可见item数量+4 个数的item。他会在滑动的时候,不断bind新的数据。 ViewPager则是需要给他View的集合,你如果有10000个item,那内存中就必须有10000个item。 曾经我懵懂的时候问过Android老师,怎么才能只使用3个item去实现ViewPager? 这个问题挺白痴的,因为很简单就能实现。但是没想到老师说的答案令我震惊了,你没必要这么搞,他会自动替你管理,你移动到哪里就会有对应的item的销毁和创建。我说,假如我要写一个电子书,他有10000页,我肯定不能让他有10000页在内存中的对吗。他说,现在手机硬件都很好了,你做的这点优化微不足道。。。 这里就不写后续剧情了。我们固然可以用少量的item去实现ViewPager