안드로이드
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;
}
}
실제로 사용할 프래그먼트 혹은 액티비티에서 다음과 같이 등록, 해제를 설정합니다.
@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext = getActivity(); // 버스프로바이더 등록 BusProvider.getInstance().register(this); }
@Overridepublic 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();
//해당 데이터로 처리
} }