Android性能优化——Android异步渲染View
-
【官方AsyncLayoutInflater缺点】:
-
1、所构建的View中不能直接使用Handler或者调用Looper.myLooper(),因为异步线程默认没有调用Looper.prepare();
-
2、异步转换出来的View并没有被加到parent中,AsyncLayoutInflater是调用了LayoutInflater.inflate(int, ViewGroup, false),
- 因此如果需要添加到parent View中,就需要我们自己手动添加;
-
3、AsyncLayoutInflater不支持设置LayoutInflater.Factory或者LayoutInflater.Factory2;
-
4、同时缓存队列默认10的大小限制如果超过了10个则会导致主线程的等待;
-
5、使用单线程来做全部的inflate工作,如果一个界面中layout很多不一定能满足需求。
-
6、不支持fragment
-
改造后:
-
【解决缺点2】1.异步转换出来的View自动将其添加到parent中
-
【解决缺点3】2.支持设置LayoutInflater.Factory或者LayoutInflater.Factory2
-
【解决缺点4和缺点5】3.引入线程池,减少单线程等待。
-
4.layoutinflater布局的时候,可以统计该view加载时的耗时