안드로이드 개발 질문/답변
(글 수 45,052)
package exam.Timer;
import android.app.*; import android.os.*; import android.widget.*;
public class Timer extends Activity {
int value=0;
TextView text;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text=(TextView)findViewById(R.id.text);
han.sendEmptyMessage(0);
}
Handler han= new Handler(){
public void handleMessage(Message msg){
value++;
text.setText("value="+value);
han.sendEmptyMessageDelayed(0,1000);
}
};
}제가 궁금한 부분은요
바로 han.sendEmptyMessageDelayed(0,1000);
이 메소드입니다. 익명 이너 클래스를 객체를 생성하면서 메소드를 오버라이딩했고 하나는 상속받은 객체의 메소드를
호출하였는데 제가 자바책을 아무리 뒤져봐도 클래스 안에서는 sendEmptyMessageDelayed(0,1000); 호출하지
han.sendEmptyMessageDelayed(0,1000); 이렇게 호출하지는 않더라고요. this.sendEmptyMessageDelayed(0,1000); 이렇게 했다면
이해가 가는데 왜 han.sendEmptyMessageDelayed(0,1000); 이렇게 호출한거죠




음... 전체 소스가 없어서 확실하지는 않지만, 아마도....
han 이라는 변수명을 갖는 Handler 타입의 인스턴스 변수가 하나 존재할 듯 하네요.
sendEmptyMessageDelayed() 는 Handler 클래스에서 지원하는 메서드이니, 해당 메서드를 사용하기 위해서는, han 이던 다른 이름이던,
특정한 Handler 인스턴스를 참조해야 하는 것이 맞습니다.