본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Android/안드로이드] Event Handling ( 이벤트 처리 )의 우선 순위

by 돼지왕 왕돼지 2012. 2. 28.
반응형


안녕하세요. 돼지왕 왕돼지입니다.

오늘은 이벤트 처리 ( Event Handling ) 의 우선순위에 대해 알아 보겠습니다.



무슨 얘기인가?


Touch event 를 예로 들어봅시다. Touch event 관련된 함수들은 다음이 있죠.

1. 콜백함수 : onTouchEvent( MouseEvent event ) 
2. 디스페치 함수 : dispatchTouchEvent( MouseEvent event )
3. 리스너 함수 : OnTouchListener.onTouch( MouseEvent event )

추가적으로 자식VIew 와 부모 View 도 있겠습니다.

이것들이 모두 구현 및 등록되어 있을 떄 어떤 녀석들이 먼저 불리는가를 알아보려는 것입니다.



정답은 무엇인가?


1. 리스너 함수.
 
2. 뷰의 콜백 메서드
 - dispatch 가 먼저 불리고, on 함수가 나중에 불립니다. 
 
3. 액티비티의 콜백 메서드
 - dispatch 가 먼저 불리고, on 함수가 나중에 불립니다.   



이걸 왜 알아야 하는가?


event handling 관련 함수들은 보통 boolean 형태로 return을 하도록 되어있습니다. 이 때 false를 return 하면 해당 함수에서 event 를 처리하지 않았으니 다음 사람(함수)이 처리하라는 이야기로, 우선순위의 하위순위로 이벤트가 계속 전달이 됩니다. true 를 return 하면 해당 함수에서 event 를 다 처리했다는 의미로, 쓸데없이 다음 사람(함수)에게 알릴 필요가 없어, 전달되지 않습니다. 이것을 알아두어야 하죠 :)
 

로그인 없이 추천 가능합니다. 손가락 꾸욱~

반응형

댓글