异步加载布局的问题

来源:5-5 异步Inflate实战

安卓小萌新

2020-05-21

老师,这个AsyncLayoutLayout可以用在实际项目中吗?感觉不同机型上会有兼容性问题

写回答

2回答

oRo

2021-11-11

你说:AsyncLayoutInflater不能适配appcompatactivity之类的这个问题,你更应该去翻阅源码去寻求解决方案。

老师已经提供了解决思路:就是copy一份这个异步加载布局类,修改其源码。

老师只抛出解决方案的思路,而没有提供源码,这是让我们去思索如何去解决,而不是一味地照葫芦画瓢。

官方提供的这个异步加载布局类,无非就是创建了LayoutInflater,然后开启子线程加载布局而已。
我想,你担忧的最大的问题是,这个异步加载布局类里面的LayoutInfalter没有设置Factory2,实现Compat XXXView的兼容问题。

1.阅读源码,我们可以得到:通过Activity拿到的inflater都是同一个,都是mBase里面第一次初始化的LayoutInfalter,是通过一次调用context.getSystemSerivice方法初始化的。

2.在AppcompatActivity.onCreate() ,通过context.getSystemSerivice,拿到mBase的inflater,如果factory2为空,设置了factory2。

3. 页面布局用的都是该inflater。

4.所以我们只需要,copy一份这个异步加载布局类,init方法中给内部的inflater设置该factory2。

具体的代码我就不贴出来了,毕竟老师这里是想让我们去阅读源码解决的。

2
1
随风绽放
太赞了!理解的非常到位
2021-11-12
共1条回复

随风绽放

2020-05-22

同学你好,可以用的,为什么感觉会有兼容性问题呢?这是support提供的类

0
1
安卓小萌新
就是不能适配appcompatactivity之类的
2020-05-22
共1条回复

Top团队大牛带你玩转Android性能分析与优化

由表及里学到国内Top团队对性能问题的体系化解决方案

1656 学习 · 527 问题

查看课程