-
[ Android ] EventBusAndroid 2020. 6. 22. 14:18
프로젝트를 진행할 때 컴포넌트 간 통신을 구현하고 있는데 멘토분이 Event Bus라는 것을 알려주었습니다.
당시 Android 컴포넌트 간에 데이터를 전달하는 경우 Intent를 사용하였고 Fragment와 통신을 하는 경우 context를 공유하거나 자기자신을 static으로 선언하여 다른 컴포넌트에서 사용할 수 있게 하는 방식으로 코드를 작성하고 있었습니다.
EventBus
EventBus는 컴포넌트 간에 비동기적 통신을 가능하게 하는 라이브러리 입니다.
Greenbot Github에서는 EventBus를 사용하면 좋은 점으로 아래와 같이 제시하고 있습니다.
- 컴포넌트 간에 통신을 간편하게 할 수 있다.
- 어노테이션 기반으로 이벤트 발신자와 수신자를 분리합니다.
- Activity, Fragment, UI 백그라운드 스레드에서도 잘 작동됩니다.
- 복잡하고 오류를 발생하기 쉬운 종속성 문제와 생명 주기 문제를 방지할 수 있습니다.
- 라이브러리로 인해 코드를 간결화 할 수 있습니다.
- 빠르고 가볍습니다.
이외에도 Otto 라이브러리가 있습니다.
Otto라이브러리란 Square에서 만든 Event bus형태의 라이브러리 입니다. 현재는 지원하지 않고 RxJava나 RxAndroid를 사용하는 것을 권장하고 있습니다.
참고 : Implementing an Event Bus With RxJava
사용 방법
1. 의존성을 추가합니다.
2. POJO 객체를 생성한다.
3. 메시지를 전달받을 객체에 @Subscribe 어노테이션을 등록한다.
4. 메시지를 전달할 클래스에서 Post를 보낸다.
출처
'Android' 카테고리의 다른 글
[ Android ] android the file size exceeds configured limit 오류 (0) 2020.07.06 [ Android ] Git-hub 오픈 소스 import 해서 사용하기 (0) 2020.06.18 [ Android ] D-Day 계산 오류 (0) 2020.05.22 [ Android ] Fragment Toolbar에서 back button 동작 안 하는 오류 (0) 2020.05.19 [ Android ] 위험 권한 (0) 2020.05.18 - 컴포넌트 간에 통신을 간편하게 할 수 있다.