EventBus

Lee HyeongJong·2022년 10월 17일
0

안드로이드

목록 보기
17/43

1. EventBus란?

기존의 Intent와 Serializable의 사용으로 화면전환시 데이터를 같이 심어 전송하는 방법의 보완 화면전환을 하지 않고 데이터만 전송하여 사용 MainActivity를 두고 여러 Fragment를 만들어 사용하는 방식으로 MainActivity에서 데이터를 받아 여러 Fragment에 데이터를 뿌려주는 방식으로 실시간 데이터 수발신을 만듬

2. 의존성 추가

implementation 'org.greenrobot:eventbus:3.2.0'

3. 데이터 캐리어 선언

public class MessageEvent {
 
    public final String message;
 
    public MessageEvent(String message) {
        this.message = message;
    }
}

일반적으로 데이터를 담아놓는 그릇으로 생각하면됨, 보통 MainActivity에서 데이터를 수발신 업데이트함

4. 이벤트를 수시로 업데이트하며 수신

// This method will be called when a MessageEvent is posted (in the UI thread for Toast)
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {
    Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();
}

// This method will be called when a SomeOtherEvent is posted
@Subscribe
public void handleSomethingElse(SomeOtherEvent event) {
    doSomethingWith(event);
}

타 엑티비티 혹은 프래그먼트에서 데이터를 실시간으로 받아 업데이트 한다

5. Activity가 백그라운드로 연결됐을 때

@Override
public void onStart() {
    super.onStart();
    EventBus.getDefault().register(this);
}
 
@Override
public void onStop() {
    EventBus.getDefault().unregister(this);
    super.onStop();
}

6. 데이터 전송

EventBus.getDefault().post(new MessageEvent("Hello everyone!"));

데이터 전송할 때 사용

EventBus.getDefault().register(this);

데이터를 받길 원하는 곳에 사용

참고문헌 : https://intrepidgeeks.com/tutorial/eventbus-usage-summary

profile
코딩을 시작해보자

0개의 댓글