请稍等 ...
×

采纳答案成功!

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

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

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

正在回答

1回答

随风绽放 2019-02-27 10:41:50

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

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

2 回复 有任何疑惑可以回复我~
  • 老师,您说:
    反射的话我只需要写一行反射的代码即可适配所有的类型。
    这句话理解不了,
    所有类型是指哪些类型?
    直接new对象的需要对每一个类型都new。
    同理,可能因为上一句没搞懂,这句话也就无从理解了。
    回复 有任何疑惑可以回复我~ 2019-03-01 10:10:51
  • 你好哈,你可以看下LayoutInflater这个类的createView方法,里面就是反射创建的View:            final View view = constructor.newInstance(args); 你看这里就是一行反射直接适配所有不同的View的子类比如Button、CheckBox等所有的类型就是指:不同的View的子类。
    
    你想如果不是反射创建的对象,那只能通过new对象的方式了,那是不是需要具体显示的写每一个View对象的创建代码 new Button、new CheckBox。
    
    不清楚的话继续追问哈,遇到不懂的问题就需要你这样锲而不舍的精神!加油
    回复 有任何疑惑可以回复我~ 2019-03-01 22:30:54
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信