ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 이벤트 처리 2 - 리스너 인터페이스
    Programing/Android 2010. 10. 5. 07:26

    리스너는 특정 이벤트를 처리하는 인터페이스이다.
    모든 리스너는 View클래스의 이너 인터페이스로 선언되어 있다.

    View.OnTouchListener :  boolean onTouch ( View v, MotionEvent event)

    View 클래스 내부 인터페이스로 OnTouchListener  인터페이스가 선언되어 있고 이 인터페이스는 onTouch 라는 추상 메서드를 포함한다.
    이러한 메서드를 이벤트 핸들러라고 부른다.
    다른 리스너들도 이름만 조금씩 다를 뿐이지 거의 비슷한 구조이다.
    모든 인터페이스에는 이벤트를 처리하는 추상 메서드가 딱 하나씩만 선언되어 있다.

    리스너를 구현하는 클래스를 선언하고 추상 메서드인 핸들러를 구체적으로 구현하면 리스너 객체가 만들어진다.
    하지만 이렇게 만들기만 한다고 이벤트가 발생했을 때 핸들러가 자동으로 호출 되지는 않는다.
    어떤 리스너가 어떤 이벤트를 처리한다는 것을 등록해야 하는데 예를 들면 다음과 같다.

    void setOnTouchListener (View.OnTouchListener)


    결국
    1. 리스너를 구현하는 클래스를 선언하고 추상 메서드를 구현한다.
    2. 리스너 객체를 선언 및 생성한다.
    3. 준비된 리스너 객체를 뷰의 이벤트와 연결한다.


    화면에 터치 이벤트를 발생시키면 setOnTouchListener 메서드에 등록한 리스너 객체의 onTouch 핸들러가 호출된다.

    콜백 메서드는 상속을 받아야만 재정의 할 수 있는데 비해 리스너는 인터페이스일 뿐이므로 임의의 클래스가 구현할 수 있다. 누구든간에 인터페이스가 요구하는 onTouch 핸들러 메서드를 구현하기만 하면 리스너가 될 수 있으며 인벤트 핸들러로 등록할 수 있다.

    하지만 리스너는 인터페이스 구현을 위해 별도의 클래스를 하나 더 선언해야 한다는 면에서 번거롭다.
Designed by Tistory.