버그 잡이

java 콜백, android 콜백 본문

안드로이드/자바

java 콜백, android 콜백

버그잡이 2020. 3. 12. 11:34

오늘은 자바 중급 과정 2탄으로 CallBack에 대해서 알아보겠습니다.

 

 

1. CallBack이란 무엇인가?

 

- 일반적인 함수 호출은 호출자가 피호출자를 부르는데 callback은 반대로 피호출자가 호출자를 부르는 것입니다.

- 즉, 사용자가 시스템에서 요청하는 일반적인 과정과 다르게 시스템 측에서 이벤트를 발생시켜 이를 처리해달라고 하는 것입니다.

 

 

 

2. CallBack은 왜 쓰는가?

 

- A클래스에서 동작할 수 없고 B클래스에서만 동작할 수 있는 메서드를 A측에서 호출할 수 있도록 한다.

 

 안드로이드로 예를 들어보겠습니다.

 리사이클러뷰를 구현했는데 각 항목에 대한 클릭이벤트를 구현하고 싶습니다.

 

 A클래스 : MainActivity

 B클래스 : RecyclerViewAdapter

 

 각 항목 클릭에 대한 메서드는 B클래스에서만 동작할 수 있습니다.

 그런데 저는 intent를 넘기기 위해서 A클래스에서 그 동작을 구현해야합니다. 

 이때 사용하는 것이 콜백입니다.

 

 

3. CallBack은 어떻게 동작하는가

 

 - 콜백은 인터페이스(interface)를 통해서 구현이 가능합니다.

 - B클래스에서 interface를 선언하고 그 interface를 A클래스에서 정의함으로써 해당 메소드를 호출할 수 있습니다.

 

 

 

* Interface란 무엇인가?

 

  "규제" : 어떤 객체가 있고 그 객체가 특정 인터페이스를 사용한다면 그 객체는 반드시 인터페이스의 메소드를 구현해야한다.

 

  정의는 위와 같이 간단하게만 알아 두고 CallBack있어서 중점을 둬야할 부분은 interface의 특징인 "다형성"입니다.

  위 사례에서 다형성이란 '같은 메소드를 가지고 있지만 그 반환값을 다르게 지정할 수 있다.'

  즉, B클래스에서 메소드가 동작하도록 선언하고, A클래스에서 그 반환값을 구현하는 것입니다.

 

 

 

--------------------------------------------------------3.30(월)--------------------------------------------------------------

 

콜백과 리스너라는 개념이 헷갈려 정리해보고자 합니다.

 

*CallBack vs 리스너

 

- callBack은 메서드 / 리스너는 콜백 메서드를 가진 인터페이스

- callback 메서드는 콜백시 구체적인 행동을 처리하는 메서드

- 리스너 인터페이스는 이 결과를 핸들러로 전달하는 역할 

 

* 그냥 리스너의 역할은 이벤트 결과를 핸들로로 전당하는 것입니다.

* 콜백 + 리스너는 이벤트 결과를 핸들러로 전달하는데 그 결과가 caller의 원리에 따른 것이 아니라 callback의 원리에 따른 것입니다.

* 즉, 특정 이벤트 충족시 사용자가 시스템에게 요청하는 것이 아니라 시스템이 반대로 이 콜백 메서드를 처리해달라고 요청하는 것입니다.

 

 

아직 개념이 명확하지 않은데 나중에 다시 한번 더 정리해야할 것 같습니다.

 

 

 

 

참고사이트: 

https://onlyfor-me-blog.tistory.com/47

 

[Android] 콜백이란? 리스너란?

안드로이드 공부를 하다가 자주 콜백 메서드라는 말을 보게 된다. 디벨로퍼의 생명주기 문서에도 콜백 메서드라는 말이 자주 나오는 걸 볼 수 있다. 그래서 잠깐 쉴 겸 콜백에 대해서 정리해보려고 한다. 콜백(cal..

onlyfor-me-blog.tistory.com

https://devsophia.tistory.com/entry/JAVA-%EC%BD%9C%EB%B0%B1-%EB%A9%94%EC%84%9C%EB%93%9C-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0

 

JAVA 콜백 메서드 구현하기

01. 콜백이란 ? Callee Side에서 Caller Side위에 작동하는 메서드를 호출하는 것. 02. 콜백 구현 및 진행 순서 01) Callee : 콜백 인터페이스 및 메서드 선언 02) Caller : 콜백 인터페이스 구현 및 Callee객체에..

devsophia.tistory.com

https://opentutorials.org/module/516/6063

 

인터페이스 - Java

인터페이스란? 인터페이스(interface)는 다소 추상적인 개념이다. 인터페이스가 무엇인가를 철학적으로 논하려면 책 한권이 필요할지도 모르겠다. 하지만 우리는 철학 공부를 하는 것이 아니라 공학 공부를 하는 것이니 자바의 기능으로서 인터페이스를 받아들이면 되겠다. 필자가 앞선 수업에서 인터페이스를 abstract, final와 함께 대표적인 규제라고 언급했던 것 기억하는가? 인터페이스의 역할은 이렇다. 어떤 객체가 있고 그 객체가 특정한 인터페이스를 사

opentutorials.org

https://www.charlezz.com/?p=768

 

안드로이드로 배우는 자바의 인터페이스 (콜백, 리스너, 옵저버) | 찰스의 안드로이드

Before diving into interface 초보 자바 개발자 분들의 단골로 하는 질문이 있습니다. “리스너(콜백)가 뭐에요?” 또는 “인터페이스가 뭔지 모르겠어요!!” 자바의 인터페이스에 대한 개념없이 리스너를 이해하려 하는것은 헤어나올 수 없는 늪에 빠진것과 같습니다. 초보자 분들을 위해 인터페이스의 개념도 알아보고 실제 용례도 알아보고자 이 포스팅을 작성합니다. What is Interface? 포스팅을 작성하기 위해 인터페이스에 대한 정의부

www.charlezz.com

 

반응형
Comments