异步 LayoutInflater
2017-05-16 本文已影响426人
lguipeng
LayoutInflater
LayoutInflater 这个类大家应该都很熟悉,经常跟它打交道。我们经常用它来解析 layout xml的文件,返回一个View。但是不知道大家有没有注意,这个操作是有点耗时的,特别是复杂的布局的时候,需要解析xml,然后生成那么多控件,可想而知。
AsyncLayoutInflater
AsyncLayoutInflater 这个类是 Support 包里面带的,我们可以直接拿来使用。
它提供了一个 inflate 的方法, 基本跟 LayoutInflater 一样,但是最后多了一个参数,就是一个回调参数,inflate 完布局 就能在这个地方接受到回调。注意这个方法是要在 UI 线程调用的,源码用了 @UiThread 标记。
AsyncLayoutInflater 的代码也不多,还不到两百行,里面有 LayoutInflater 变量,和一个队列线程,还有一个 Handler 负责 inflate 消息的处理,所以 AsyncLayoutInflater 只是封装装饰。有兴趣可以去看源码。