2011-04-09 2 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; 
     // ... 
    } 
} 
... 
} 
:

나는 모든 클릭을 처리하는 내 활성을 갖는 한 후 추가 작업을하고, 현재 프로젝트에서이 방법을 사용하고 있습니다