Before 2022/Android

Event Bus

Eljoe 2019. 5. 20. 12:12
implementation 'com.squareup:otto:1.3.8'
/**
 * Event Bus Class
 * 같은 데이터를 사용하는 두 개 이상의 화면이 있는 경우
 * 한 화면에서 데이터 변경 시 이벤트를 던지며,
 * 수신받은 화면에서 이벤트를 받아 작업을 처리하는 클래스
 */
object BusProvider : Bus(){
    override fun register(`object`: Any?) {
        super.register(`object`)
    }

    override fun unregister(`object`: Any?) {
        super.unregister(`object`)
    }
}
// 이벤트 송, 수신 시 사용할 객체
data class Event(
    val result_code: String
)

 

이벤트를 송신하는 화면

// 해당 로직에서 같은 데이터를 사용하는 다른 화면으로 이벤트 객체를 던진다.
BusProvider.post(Event("00"))

 

이벤트를 수신하는 화면

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    BusProvider.register(this)
    ...
}

//이벤트 수신 시 진행할 작업을 등록한다.
@Subscribe
fun finishLoad(event: Event) {
	if (event.result_code == "00") toDoMethod()
}

override fun onDestroy() {
	// 이벤트 해제
	BusProvider.unregister(this)
	super.onDestroy()
}