哪个是设置侦听器的更好方法?

Which is the better way to set up a listener?

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

(第一种方式)

myButton.setOnClickListener(this);

相对于

(第二种方式)

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

不过我最近遇到 this 问题,其中一条评论说:

...use of a smaller class to act as the listener interface vs passing the whole adapter to act as the interface.

据我了解,内部 classes 具有对外部的隐式引用,因此根据您设置侦听器的方式,应该不会影响传递的对象 in/referred.

有人可以阐明哪种方法更好吗?为什么?使用 this(第一种方式)是否比使用匿名内部 class(第二种方式)更昂贵?

使用哪一个并不重要。但是在某些情况下,一种方法是 "better" 然后是另一种方法。例如:

-如果您只有几个可点击的视图,那么没有必要让整个Activity实现OnClickListener接口。所以在那种情况下我更喜欢你的 "second way".

-否则,如果您有 更多可点击的视图 或者如果您的 Activity 主要包含可点击的视图 那么您的 "first way" 是首选。这并没有太大的区别,但是您的代码更 更有条理

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