안드로이드 개발 질문/답변
(글 수 45,052)
안드로이드에서
OnClickListener를 임플리먼츠 해주면 해당 클래스에
onClick(View v) 메서드가 오버라이딩 되잖아요?
오버라이딩 되는 걸 보면
OnClickListener 인터페이스에 onClick()이라는 추상 메서드가 있는 건 알겠는데
View에 setOnClickListener라는 걸 달아 주잖아요?
그럼 View에는 내부적으로 어떤식으로 interface를 처리하나요?
코드적으로 말고 동작에 대해 흐름만 설명 부탁드립니다.
2013.01.10 09:37:23
interface 의 일반적인 개념에 대해서는 어느정도 아신다고 생각하고 적겠습니다.
뷰가 터치 이벤트를 처리하는 순서가 예를들어...
작업1 -> 작업2 -> 작업3
이고 작업2 쯤에서 터치 다운,무브,업을 각각 처리해 클릭이 되었다는 판단을 했다고 가정합니다.
이때 View 는 자기 스스로 터치 이벤트들을 통해 자신이 클릭되었다는걸 알지만 View 의 외부에서는 알수가 없겠지요...
해서 특정 인터페이스를 임프리먼트한 객체가 등록되어 있다면 해당 객체의 약속된 함수(여기서는 onClick())를
호출하도록 코딩되어 있습니다.
C/C++ 를 해보셨다면 간단히 콜백을 떠올리시면 될 것 같습니다.(물론 좀 다르긴 합니다...)