关于Android布局加载原理一节得疑问

来源:5-3 Android布局加载原理

慕运维0109303

2019-02-24

老师,您好。反射比较消耗性能,那为什么Android要通过反射的形式去构建View?而不是直接new对象?例如:TextView tv=new TextView(context);
另外,这两种方式去构建,哪一种更加消耗性能呢?

写回答

1回答

随风绽放

2019-02-27

同学你好,提问这个问题说明你认真思考源码了。为什么Android要通过反射的形式去构建View?而不是直接new对象?这是因为如果是反射的话我只需要写一行反射的代码即可适配所有的类型,直接new对象的需要对每一个类型都new。而有些是自定义的类型系统更是不可能在源码中new出来。

下一个问题,肯定是反射更加消耗性能,new 是正常的创建对象。

2
2
随风绽放
回复
全是甘货
你好哈,你可以看下LayoutInflater这个类的createView方法,里面就是反射创建的View: final View view = constructor.newInstance(args); 你看这里就是一行反射直接适配所有不同的View的子类比如Button、CheckBox等所有的类型就是指:不同的View的子类。 你想如果不是反射创建的对象,那只能通过new对象的方式了,那是不是需要具体显示的写每一个View对象的创建代码 new Button、new CheckBox。 不清楚的话继续追问哈,遇到不懂的问题就需要你这样锲而不舍的精神!加油
2019-03-01
共2条回复

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

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

1696 学习 · 532 问题

查看课程