정상에서 IT를 외치다

[Android, RxEventBus] Rx를 사용한 EventBus 본문

안드로이드

[Android, RxEventBus] Rx를 사용한 EventBus

Black-Jin 2018. 5. 10. 16:08
반응형

안녕하세요. 블랙진입니다.


저번에 Sqare 에서 만든 Otto 라이브러리를 사용한 Event Bus 를 포스팅 했었는데


이번에는 Rx 를 사용한 Event Bus 를  알아보겠습니다.


( Otto 라이브러리를 사용한 Event Bus :  http://black-jin0427.tistory.com/30 )



0. Rx 라이브러리 추가

//rx android
implementation "io.reactivex.rxjava2:rxandroid:$rxAndroidVersion"
implementation "io.reactivex.rxjava2:rxjava:$rxJavaVersion"

제가 사용한 버전은 rxAndroidVersion = '2.0.1' , rxJavaVersion = '2.1.3'  입니다.



1.  싱글톤 패턴으로 RxEventBusHelper 를 만들어 줍니다.


참고로 자바에서는 싱글톤 패턴을 만족시키기 위해 인스턴스 변수를 선언하고 정적 메서드를 추가하지만 코틀린 에서는 object  하나만 선언하면 됩니다.


아래와 같이 RxEventBusHelper 를 생성하였고 PublishSubject.create<>() 변수에


String 을 선언하였습니다.


이번 예제에서는 이벤트 버스를 통해 String 을 전달할려고 합니다.

object RxEventBusHelper {

val mSubject = PublishSubject.create<String>()

fun sendEvent(str: String) {
mSubject.onNext(str)
}

}



2. EventBus 를 받을 부분에 구독을 합니다.

RxEventBusHelper.mSubject
.subscribe({
Log.d("MyTag", it)
})



3. EventBus 를 구독한 화면에 데이터를 전달 합니다.

RxEventBusHelper.sendEvent("전송시킬 데이터")


위와 같은 방법으로 Rx 를 사용하여 손쉽게 EventBus 를 구현할 수 있습니다.




반응형
Comments