2015-02-05 56 views
1

我还没有完全想到在Android中设置侦听器的首选方式。我倾向于设立我的听众是这样的:哪种设置侦听器更好?

,而不是

(第二路)(第一种方式)

myButton.setOnClickListener(this); 

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

不过,我最近碰到this问题就来了其中一条评论说:

...使用较小的类作为侦听器接口,并将整个适配器作为接口传递给 。

据我的理解,内部类有一个隐式引用外部的一个,所以取决于你如何设置监听器应该不会影响什么对象被传入/被引用。

有人可以澄清哪个更好,为什么?使用this(第一种方法)比拥有匿名内部类(第二种方法)更昂贵?

+0

我从来没有注意到任何种类的差异。如果我需要将侦听器添加到多个视图,我选择第一种方法;第二否则。 – Rohit5k2 2015-02-05 18:10:26

+0

选项三:使用(非匿名)内部类。 – nhaarman 2015-02-05 22:43:29

+0

我不明白为什么@ 323go,eckes,汤姆,尼克哈曼,klossus是投票结束作为有见地的问题?我并不要求就此发表意见。我只是想知道哪个更贵,为什么性能更好 – Naveed 2015-02-06 04:51:16

回答

0

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

- 如果您只有几个可点击的视图,那么不需要整个活动实现接口。所以在这种情况下,我宁愿你的“第二种方式”

- 否则,如果您有更多的次点击或如果你的活动大多含有可点击查看然后最好的“第一路”。它并没有太大的区别,但是你的代码更有有组织

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