일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Swift Package Manager
- swift #swift keychain #keychain 사용법
- base64 변환
- SwiftUI
- development language
- UIPresentationController
- ios
- 스크롤 탭
- 기존 앱
- notifychanged
- 개발자 면접
- List
- swift
- GeometryReader
- UIViewControllerTransitioningDelegate
- Side Menu
- oberve url
- url 추적
- Tuist
- scrolling tab
- 상단 탭바
- ViewBuilder
- Android
- DataBinding
- DevelopmentRegion
- convert base64
- pod install
- transformation.map
- url 관찰
- detect url
- Today
- Total
버그 잡이
java 콜백, android 콜백 본문
오늘은 자바 중급 과정 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
https://opentutorials.org/module/516/6063
https://www.charlezz.com/?p=768
'안드로이드 > 자바' 카테고리의 다른 글
Interface 개념 정리 #추상클래스 vs 인터페이스 #다형성 (0) | 2020.06.03 |
---|---|
[JAVA] static 과 final (0) | 2020.03.28 |
[Java] Json 파싱하기 #JSONArray, JSONObject #json에서 원하는 값 추출 (0) | 2020.03.19 |
자바(java) Null Check, 안드로이드 null check (0) | 2020.03.11 |