2011-04-09 15 views
0

也許愚蠢的問題,但我不明白...
以下方式之間有區別嗎? 我的意思是浪費內存什麼的?參考自己與獨立子類的回調

class A implements Handler.Callback { 
    // is it OK to pass the loopback reference into the Handler in this case? 
    Handler mHandler = new Handler(this); 
    public boolean handleMessage(Message msg) { 
     ... 
    } 
} 

class B { 
    Handler mHandler = new Handler() { 
     @Override 
     public void handleMessage(Message msg) { 
      ... 
     } 
    }; 
} 

謝謝!

回答

1

我會說這取決於您的期望用法。如果你只有一個按鈕,需要處理它的點擊,我會使用一個匿名類(如在你的class B中)。但是,如果一個視圖包含大量的按鈕或其他東西,你想要處理點擊事件,我將使用第一個方法和所有控件的單個處理程序。這樣可以避免爲每個控件創建一個額外的對象(編碼和內存溢出)!

我在一個項目中使用這種方式目前,有處理每一次點擊我的活動,然後做進一步的工作:

public class MyActivity extends Activity implements View.OnClickListener { 

... 

@Override 
public void onClick(View view) { 
    switch (view.getId()) { 
    case R.id.button1: 
     // handle button 1 
     break; 
    case R.id.button2: 
     // handle button 2 
     break; 
     // ... 
    } 
} 
... 
}