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()
}
'Before 2022 > Android' 카테고리의 다른 글
| Dialog Full Size 및 화면 하단에 위치 시키기 (0) | 2019.06.17 |
|---|---|
| USIM 관리 클래스 총정리(유심 체크, 번호 가져오기, 번호 포맷 통일) (0) | 2019.06.17 |
| FCM 푸시 구현하기 - 준비 작업 (0) | 2019.04.09 |
| 퍼미션 체크(권한 허용 요청) 커스텀 리스트 뷰 리팩토링 (0) | 2019.03.15 |
| 퍼미션 Enum으로 관리하기 (0) | 2019.03.13 |