- 列表卡顿原因分析 :NestScrollView嵌套RecyclerView,破坏了RecyclerView的复用机制。
NestScrollView在measureChildWithMargins中将传送给子View的MeasuerSpec置为0(UNSPECIFIED),如下图:
所以在RecyclerView 中收到的heightSpec为0;
这就导致往下的skipMeasure为false,然后每次添加数据都会重新measure,而且会把RecycleView的复用机制,滚动出去的Item不会被回收缓存,这就造成了Item越多,measure过程越久而导致的卡顿甚至ANR;
解决方案:1.尽量不用NestScrollView嵌套无限列表;(数据少的可以用)
2.可以用RecyclerView添加header、foot的方式来减少嵌套结构
3.一定要嵌套滑动可以用ScrollView;