外观
AsyncLayoutInflater 到底优化了什么?
标准回答
AsyncLayoutInflater 尝试在后台创建布局对象,降低主线程同步 inflate 的压力;最终把 View 接入界面和后续 UI 操作仍要遵守主线程规则。
关键机制
- 并非所有布局都能后台创建。构造过程中依赖 Looper、Handler 等情况可能不满足要求,失败时可回退主线程。
- 异步完成时间不由 Activity 生命周期等待:onResume 可能已执行,而布局仍未准备好,所以需要明确 Loading 与 Ready 状态。
- 保持首屏骨架完整、关键内容优先,并在合适时机统一附加复杂区域,可减少“一块块冒出来”的视觉割裂。
通俗例子
页面先显示标题和基本操作区,复杂设备面板异步创建,完成后校验页面仍有效,再附加并绑定数据。页面已销毁时丢弃结果。
易混淆点
它不会自动打乱系统生命周期,也不等于整个 measure / layout / draw 都转到后台;先确定瓶颈确实在 inflate。
参考资料
内容来源
- Android 技术札记 · 原条目
async-inflate