# 动机

在Android上构建列表界面非常简单。只需为条目创建一个布局，将其挂接到RecyclerView适配器，即可完成。不过，大多数应用程序比这更复杂一点。

如果您的适配器具有多个视图类型，则必须考虑用更可靠的方式回收视图。如果视图类型太多，RecyclerView会在每次显示新类型时不断填充新视图，滚动列表时很有可能导致帧丢失。

可以复用同一种视图实例以适应不同的视图类型来最小化试图类型的数量，但是随着不断为产品增加新功能，这样做通常会越来越容易产生bug.

如果列表条目很复杂，则需要对布局进行优化。针对比较简单的情况，只需要避免Android现存布局结构中的一些陷阱就可以获得良好的性能，但情况并非总是如此。常用的做法是针对用例来定制自定义视图。自定义视图非常有助于提高UI性能，但是往往会因为增加复杂性和产生更高的维护成本而放慢开发速度。

还可以通过将RecyclerView中的复杂条目分解为适配器中的单独项目来优化复杂的条目，以便在滚动时更好地分摊每个帧的布局和绘图时间。这种方法在某些情况下可以很好地工作，但它仍然需要开发自定义视图，并且通常会导致适配器中视图类型的爆炸式增长，从而导致我们上述提到的问题。

Litho的构建主要为了将实现高效的RecyclerView的复杂度封装起来。使用Litho，不再需要视图类型，只需在后台线程中提前无缝计算布局以及自动渲染更平坦的视图层次结构即可构建用户界面。基于这样一个比较简单的编程模型可以免费获取所有这些高级功能。
