哪个是设置侦听器的更好方法?
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 并找出这两种方法之间的区别。
我还没有完全弄清楚在 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 并找出这两种方法之间的区别。