안드로이드

otto 이벤트버스 사용

wangkisa 2016. 1. 20. 01:25


사용하기 위해서는 다음과 같이 라이브러리를 추가해 줍니다.

 compile 'com.squareup:otto:1.3.8'

이벤트 버스 데이터 전달을 위한 클래스를 생성합니다.

public class BusEvent {

    private EventData eventData;

    public BusEvent(EventData eventData) {
        this.eventData = eventData;
    }

    public EventData getEventData() {
        return eventData;
    }
}

public class BusProvider {
    private static final Bus BUS = new Bus();

    public static Bus getInstance() {
        return BUS;
    }

    private BusProvider() {
        // No instances;
    }

}

실제로 사용할 프래그먼트 혹은 액티비티에서 다음과 같이 등록, 해제를 설정합니다.

@Override

public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext = getActivity(); // 버스프로바이더 등록 BusProvider.getInstance().register(this); }

@Override

public void onDestroy() {

// 버스프로바이더 해제 BusProvider.getInstance().unregister(this); super.onDestroy(); }

예를 들어 선택한 날짜 데이터 전달 EventData eventData = new EventData(); eventData.setDate(sdf.format(date)); BusProvider.getInstance().post(new BusEvent(eventData));


위 전달한 데이터를 받는 부분

@Subscribe public void FinishLoad(BusEvent pushEvent) { mSelectedDate = pushEvent.getEventData().getDate(); 

//해당 데이터로 처리

} }