안드로이드 개발 질문/답변
(글 수 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 인스턴스를 참조해야 하는 것이 맞습니다.