【问题标题】:Implements Listener Directly or Implements on Class (Performance)直接实现监听器或在类上实现(性能)
【发布时间】:2014-03-11 16:39:22
【问题描述】:

这两种情况在性能上有区别吗:

情况1

this.pathSelect = (EditText)findViewById(R.id.mainactivity_path_select);
    this.pathSelect.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // do my work
        }
    });

情况2

    private class PathSelectClick implements View.OnClickListener
    {
        @Override
        public void onClick(View v) {
            // do my work
        }
    }

    this.pathSelect = (EditText)findViewById(R.id.mainactivity_path_select);
    this.pathSelect.setOnClickListener(new PathSelectClick());

对于视觉我喜欢使用情况 2,这很糟糕吗?谢谢大家!

【问题讨论】:

  • 没有性能差异
  • 数字 2 的优点是可重复使用(将相同的侦听器应用于多个按钮)而无需重复代码。

标签: android performance


【解决方案1】:

没有性能差异

在第一种情况下,您使用匿名内部类并实现接口View.OnClickListener

在第二种情况下,您使用实现接口的类PathSelectClick

查看以下内容以了解何时使用

http://docs.oracle.com/javase/tutorial/java/javaOO/whentouse.html

【讨论】:

    【解决方案2】:

    不,几乎没有性能差异。见this。但如果有细微差别,您最喜欢的版本会稍微快一些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 2011-08-21
      • 2015-10-07
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多