callback 메소드가 있는 클래스의 객체 선언 법
abstract 클래스도 아니고 interface도 아닌
일반 클래스임에도 콜백 메소드(시스템에 의해 자동 호출되는 메소드)가 있을 경우 abstract 클래스나 interface와 유사한 방식으로 객체를 생성을 할 수 있다.
아래 두 경우를 보면 모두 일반 클래스이다.
public class Handler extends Object
public class PhoneStateListener extends Object
그런데 이들 클래스 안에 콜백 메서드를 사용하기 위해 다음과 같이 mHandler라는 객체를 다음과 같이 생성한다.
Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg){ //이게 콜백 메소드
//여기서 원하는 기능 수행
}
};
위의 handleMessage() 메소드는 핸들러로 메시가 들어올때 즉 이 핸들러 호출이 있을 때 시스템에 의해 이 메소드 호출된다.
PhoneStateListener mPhoneState = new PhoneStateListener(){
public void onCallStateChanged(int state, String incomingNumber){ //이게 콜백 메소드이다.
switch(state){
case TelephonyManager.CALL_STATE_IDLE :
txt.append("\n☆ 전화 상태 : 대기 상태");
break;
case TelephonyManager.CALL_STATE_OFFHOOK :
txt.append("\n☆ 전화 상태 : 통화 중");
break;
case TelephonyManager.CALL_STATE_RINGING :
txt.append("\n☆ 전화가 왔습니다 : " + incomingNumber);
break;
}
}
};
'Android' 카테고리의 다른 글
android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 에러 문제 (2) | 2015.11.09 |
---|---|
안드로이드 전화번호 입력시 자동으로 dash(-) 붙이기 (0) | 2015.11.05 |
한 프로그램에 여러 Activity가 있을 때 처음 실행되는 Activity 지정하는 법 (0) | 2015.11.04 |
안드로이드와 서버와의 통신에서 연결하는 절차 (0) | 2015.11.04 |
안드로이드 저장 공간에 디렉토리 생성 및 파일 생성 하기 (0) | 2015.11.03 |