这个问题已经以多种形式被问了很多次,在这里和这里;但我想确认一件事,我的问题很简单:android:onClick
使用Java反射吗?
正如这里所解释的,由于Java反射会降低性能,所以我永远不想以低效的方式进行编码。
我只想得到一个简单的答案:是(前提是你确信)还是不是?
编辑:
关于SO,有很多答案与理解相冲突:
例如,请看这个和这个。两人都接受了答案,并且都在说两件不同的事情。(这只是我发布这个问题的原因。)
实际上,它确实使用反射将方法("methodName")绑定到处理程序。在对XML进行膨胀时,这是一次性的处理,不会以任何有意义的方式影响性能。XML膨胀本身就是一个相当昂贵的解析,
(根据http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.1_r2/android/view/View.java#2017)
除此之外,它和在代码中执行完全一样。
在响应按钮点击的延迟达到约十分之一秒之前,人类会将其视为瞬时的,因此优化按钮点击响应的反射并不重要。
您不应该担心这种问题,这样优化工作就可以集中在存在可衡量的性能问题的代码上。