请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

异步加载布局的问题

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

正在回答 回答被采纳积分+3

2回答

oRo 2021-11-11 18:26:34

你说: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 回复 有任何疑惑可以回复我~
  • 太赞了!理解的非常到位
    回复 有任何疑惑可以回复我~ 2021-11-12 10:36:26
随风绽放 2020-05-22 16:04:55

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

0 回复 有任何疑惑可以回复我~
  • 提问者 安卓小萌新 #1
    就是不能适配appcompatactivity之类的
    回复 有任何疑惑可以回复我~ 2020-05-22 16:48:18
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信