2016-12-15 49 views
0

我試圖在我的應用程序視圖上實現OnClick行爲。由於我是Android新手,並且想知道如果將此傳遞給View.OnClickListener接口將會是更好的選擇,或者使用setOnclickListener匿名類來控件。至於我,我覺得通過這可能會導致整個活動和它的子元素到特定的小部件,因此有更多的內存消耗,以避免內存泄漏,這是最好的方法。setOnclickListener vs Activity implements View.OnClickListener

+0

最好的選擇是實現View.OnClickListener。它會減少一些代碼行,並容易在一個塊中保留所有的點擊事件。 – Nas

+0

@Nas yup我知道這一點,但我對內存消耗很好奇。 –

+0

也許它會減少你的文件大小的一些內存(空間),但是兩者都會引用相同的類,並且工作原理相同,因此它會分配相同數量的內存(RAM)。 – Nas

回答

1

實際上,當我們實現OnClickListener是因爲我們有多個或兩個單擊項目。就像如果我有一個佈局10個按鈕和我寫的每一個點擊監聽器:

button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     } 
    }); 
    button2setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     } 
    }); 
    button3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     } 
    }); 

它不是一個良好的編程習慣這就是爲什麼我們實現OnClickListener譜寫的onClick的所有點擊監聽器()。 因此,您在將來進行任何更改時都很容易。

否則,如果你有單個按鈕,那麼你可以使用setOnClickListener()。

這兩者之間沒有太大的區別。它的所有關於Android的良好編碼習慣。 :)

+0

它的一切都好,但我認爲實現一個接口,然後傳遞使用這意味着我們正在創建一個活動的完整引用到特定的小部件,所以可能複製與活動相關的所有內存開銷。而在傳遞接口作爲匿名類時,我們只是傳遞特定的接口而不是活動。 –

0

您還可以使用XML格式file.its容易

android:onClick = "ButtonOne" 

屬性!

+0

我不是在問什麼是簡單的,我只是從另一個角度思考它是內存管理。 –

+0

AFAIK所有三種方法都使用幾乎相同的內存。要考慮的問題是,哪一個是良好的編碼實踐。這取決於情況。實現View.OnClickListener和使用android:onClick =「ButtonOne」是優選的,然後使用setOnClickListner爲每個按鈕,在我看來。 –

相關問題