[Android/Library]Eventbus

2023. 2. 24. 09:49Android/도구 및 라이브러리

728x90
반응형

EventBus란?

버스 네트워크의 동작 방식과 유사하게 하나의 이벤트를 동일 채널에 연결된 모든 노드(Subscriber)들에게 보내는 방식

각 노드들은 채널에 연결되어 있기만 하다면 이벤트를 채널에 보내는 얕은 결합으로도 간단하게 데이터를 전달받을 수 있음

class MainFragment : Fragment() {
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState) //코드
    }

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        super.onCreateView(inflater, container, savedInstanceState)
        binding.lifecycleOwner = this
        return binding.root
    }

    override fun onResume() {
        super.onResume()

        // 이벤트버스 등록
        // 안드로이드 문서에서는 onStart에서 등록하고 onStop에서 해제 권고
        if (!EventBus.getDefault().isRegistered(this))
            EventBus.getDefault().register(this)
    }

    override fun onPause() {
        super.onPause()

        // 이벤트버스 해제
        // 안드로이드 문서에서는 onStart에서 등록하고 onStop에서 해제 권고
        if (EventBus.getDefault().isRegistered(this))
            EventBus.getDefault().unregister(this)
    }

    // @Subscribe를 통해 데이터를 불러옴
    // ThreadMode.MAIN: 메인 스레드에서 이벤트 처리
    @Subscribe(threadMode = ThreadMode.MAIN)
    fun printId(event: CallEvent) {
        Toast.makeText(context, "${event.id}", Toast.LENGTH_SHORT).show()
    }
}
class CallEvent(val id: Int)
// 이벤트 발생 : post(발생시키고 싶은 이벤트) -> CallEvent
EventBus.getDefault().post(CallEvent(id))
  • 안드로이드 문서에서는 onStart에서 등록하고 onStop에서 해제 권고
728x90
반응형

'Android > 도구 및 라이브러리' 카테고리의 다른 글

[Android]DeepLink와 Scheme  (0) 2023.05.29
[Android/Async]RxJava에서 Throttle과 Debounce  (0) 2023.05.10
[Android]Deeplink  (0) 2023.02.25
[Android/Async]Coroutine  (0) 2023.02.24
[Android/Async]RxJava  (0) 2023.02.24