코딩 (독학)/★ Kotlin

[Android : Kotlin] 안드로이드 콜백과 리스너에 대하여

짱득이 2022. 4. 19. 12:03
300x250
반응형

 


🐱‍🏍 Android Call-Back Pattern

사전 정의) Callback : 답신 전화 (다시 전화), 회신, 재통보 등..

 

그렇다면, Android에서 Callback의 의미는 무엇을 의미할까?

Callback Method란, 다른 함수에 인수로 전달되는 함수이며, 일종의 이벤트 후에 실행 될 것으로 예상된다.
콜백 메소드의 목적은 다른 클래스에서 일부 작업이 완료된 경우 클래스 Sync/Async에 알리는 것이다. 이는 비동기 작업을 할 때 매우 유용하다. Button을 누르거나 인터넷에서 데이터를 가져온 후 일부 작업을 수행하거나, 컨텐츠를 표시하는 등의 일상적인 작업을 수행하려 한다고 가정한다. 콜백 기능을 통해 버튼을 누르면 알림을 받으므로 이벤트 처리에 사용된다. 이 유형의 디자인 패턴은 관찰자 디자인 패턴(Observer Design Pattern)에 사용된다.

출처 : https://www.geeksforgeeks.org/asynchronous-synchronous-callbacks-java/

 

 

콜백 : 이벤트가 발생하면 특정 메소드를 호출하여 알려준다. (1개)

일반적인 함수 호출(Call)은 호출하는 함수인 호출자, 호출되는 함수인 피호출자로 구분되고, 호출자가 피호출자를 Call 하여 함수의 기능을 수행한다.

반면 콜백(Callback)은 호출(call)을 거꾸로(back)하는 것 이다. 즉, 피호출자가 호출자를 부르는 것이다.

 

즉, 일반적으로 사용자가 시스템에 임의의 서비스를 호출하는 것이 보편적이다. 처리 루틴은 시스템에 있고, 사용자가 해당 루틴을 요청함에 따라 동작이 일어나는 것이다. 이 호출과는 달리 시스템측에서 이벤트를 발생시켜 이 처리를 해 달라고 요청 해 오는 과정에서 콜백이 사용된다. 일반적인 경우와는 반대인 상황인 것이다.

 

이러한 콜백의 장점은 특정 조건이 만족됐을 때 지정한 기능을 수행하는 경우, 조건을 확인하기 위해 계속해서 조건을 만족하는지 확인하는 과정 없이 조건이 만족됐을 때 기능을 호출하기 때문에 효율적으로 기능을 수행할 수 있다는 것이다. 비동기로 조건에 대한 작업을 수행할 수 있게 되기 때문이다.

=> 대부분 on으로 시작하는 함수들이 콜백인 경우가 많으며, 버튼 클릭 등 이벤트가 발생하면 이에 맞는 작업을 수행하기 위해 코드를 작성한다.

 

리스너 (Listener) : 이벤트가 발생하면 연결된 리스너(Handler)들에게 이벤트를 전달한다. (n개)

콜백과 달리 n개를 전달한다.

리스너란, 특정 이벤트를 처리하는 Interface에 해당하며 이벤트 발생 여부를 기다리다가 이벤트 발생시 해당 이벤트에 맞는 처리를 수행하는 객체이다.

 

이벤트 리스너로 예를 들었을 때, 이벤트 리스너란 뷰 클래스 안에 있는 일종의 Interface로 이 안에 하나의 콜백 메소드가 들어있다. 이 메소드는 리스너가 등록된 뷰가 UI안의 항목과 사용자의 상호작용으로 인해 Trigger됐을 때 안드로이드 프레임워크가 호출된다. 이벤트 리스너 인터페이스 안에 포함된 콜백 메소드는 onClick(), onLongClick(), onFocusChange() 등이 있다.

 

사용자와의 상호작용 이벤트를 예시로 표현하면 아래와 같다.

1. Focus가 변하는 경우

2. Focus를 맞추면서 하드웨어 키를 누르는 경우 (또는 터치)

 => 버튼 클릭, 키보드 키 입력 등등..)

 

여기에서 옵저버와 조금 헷갈릴 수 있는데, 리스너와 옵저버는 아래와 같은 차이를 두고있다.

 - Listener (리스너) : 이벤트 발생 시 사용하는 개념

 - Observer (옵저버) : 변경을 감지하기 위해 사용하는 개념

 

=> 추상 메소드인 onTouch()를 받아 실행하며, 이벤트 핸들러라고도 한다. 사용자와 상호작용하는 이벤트 발생 시 안드로이드 프레임워크의 인터페이스를 호출한다.

728x90
반응형