【问题标题】:Which is the better way to set up a listener? [closed]设置监听器的更好方法是什么? [关闭]
【发布时间】:2015-04-05 17:15:30
【问题描述】:

我还没有完全弄清楚在 android 中设置侦听器的首选方法。我倾向于这样设置我的听众:

(第一种方式)

myButton.setOnClickListener(this);

相对于

(第二种方式)

myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //handle clicks
            }
        });

但是我最近遇到了this 问题,其中一位 cmets 说:

...使用较小的类作为侦听器接口与传递 整个适配器充当接口。

据我了解,内部类对外部类有隐式引用,因此根据您设置侦听器的方式,应该不会影响传入/引用的对象。

有人能澄清一下哪种方法更好吗?为什么?使用this(第一种方式)是否比使用匿名内部类(第二种方式)更昂贵?

【问题讨论】:

  • 我从未注意到任何形式的差异。如果需要向多个视图添加侦听器,我选择第一种方法;否则第二次。
  • 选项三:使用(非匿名)内部类。
  • 我不明白为什么@323go、eckes、Tom、Niek Harman、klossus 投票接近于固执己见的问题?我不是在征求意见。我只是想知道哪个更贵,为什么就性能而言

标签: java android performance listener


【解决方案1】:

你使用哪一个并不重要。但是在某些情况下,一种方法比另一种方法“更好”。例如:

-如果你只有几个可点击的Views,那么整个Activity就不需要实现OnClickListener接口了。所以在那种情况下,我更喜欢你的“第二种方式”

-否则,如果您有更多可点击视图或如果您的活动大部分包含可点击视图,那么您的“第一种方式”是首选。这并没有太大的区别,但是您的代码更加有条理

此外,您可以阅读此post 并了解这两种方法之间的区别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    相关资源
    最近更新 更多