자바문법은 여러 가지 변형된 구조를 허락하고, 각 이벤트마다의 특성이 조금씩 다르기 때문에 이벤트를 처리하는 다양한 방법들이 존재한다.
각 방법별로 효율성이나 가독성에 차이가 있으므로 그때그때 적절한 방법을 선택해서 사용해야한다.
첫번째 방법은 콜백 메서드 재정의 방법이다.
콜백은 특정 이벤트가 발생했을 때 시스템에 의해 자동으로 호출되는 메서드이며 이 메서드에 코드를 작성해 놓으면 이벤트 발생시의 동작을 정의할 수 있다.
boolen onTouchEvent (MotionEvent event)
많은 콜백함수중 위에 코드는 화면을 터치할 때 발생하는 이벤트이다.
위의 사진은 에뮬레이터의 아무곳이나 클릭하면 Toast로 "터치이벤트 발생"이라는 텍스처를 보여주는 화면이다.
소스 코드는 아래와 같다.
Myview 클래스는 View 클래스로부터 파생된 클래스로 이곳에서 onTouchEvent 메서드를 재정의한다.
Myview 는 우선 super() 메서드를 통해 부모클래스의 생성자를 통해 초기화를 하고 onTouchEvent 를 재 정의하고 있다.
화면의 어느 곳이든 터치가 되면 true 아니면 false이다.
터치가 되었다면 Toast를 이용해 화면에 잠시동안 "터치이벤트 발생"이라는 문구를 나타나게 하고 있다.
이 방법은 아주 간단하고 직관적이다. 특정 사건에 대해 특정 메서드를 호출하기로 프레임워크와 약속되어 있으므로 지정된 원행대로 메서드를 재정의 하기만 하면 된다.
하지만 항상 메서드를 재정의하기 위해서 슈퍼 클래스를 상속 받아야 한다는점이 단점이다.
또 안드로이드는 모든 이벤트에 대한 콜백함수를 제공하고 있지 않다.
따라서 좀 더 범용적이고 간편한 이벤트 처리 방법을 제공하는데 그것이 바로 리스너이다.