此问题已经多次提出here和here;但我想确认一件事,我的问题很简单:android:onClick
是否使用Java反射?
由于Java反射会降低性能as explained here,因此我绝不会以低效的方式编写代码。
我只想要一个简单的答案:是(只有你确定)或不是吗?
修改:
有许多答案与SO相冲突的理解:
例如,请参阅this one和this one。两人都接受了答案,两人都说了两件不同的事情。 (这就是我发布问题的原因。)
答案 0 :(得分:2)
确实,它确实使用反射将方法(“methodName”)绑定到处理程序。这是一次性交易,同时膨胀XML并且不会以任何有意义的方式影响性能。 XML通胀本身就是一个相当昂贵的解析,
除此之外,它与在代码中执行它完全一样。
答案 1 :(得分:1)
直到响应按钮点击的延迟达到大约1/10秒,人类才会将其视为instantaneous,因此优化按钮点击响应的反射并不重要< / em>的
您不必担心此类问题,因此优化工作可以专注于存在可衡量性能问题的代码。