2015-02-05 89 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並找出這兩種方法之間有什麼區別。