greenrobot EventBus 사용 실천

5446 단어 Android
STEP 1:build.gradle 에 가입
compile 'org.greenrobot:eventbus:3.0.0'

그 다음 에 프로젝트 를 다시 컴 파일 합 니 다.정식 적 으로 사용 할 때 EventBus 를 찾 지 못 하면 다음 과 같은 처리 방법 을 사용 합 니 다.
효과 가 없습니다.의존 을 추가 하 는 데 실 패 했 습 니 다.아무런 반응 이 없 었 습 니 다.나중에 stackoverflow 를 보면 allprojects 의 reposcories 아래 에'mavenCentral()'을 넣 어도 처음에는 효과 가 없 었 습 니 다.나중에 안 드 로 이 드 를 다시 시작 하면 됩 니 다.그 전에 여러 번 rebuild 가 사용 되 지 않 았 습 니 다.
두 번 째 단계:메시지 클래스 정의
public class MessageEvent {
 public int pos;
    public String cityId;
    public MessageEvent(int pos , String cityId) {
        this.pos = pos;//             ,             
        this.cityId = cityId;
    }
}

세 번 째 단계:메 시 지 를 보 내 는 코드 를 작성 합 니 다.
예 를 들 어 버튼 을 누 르 고 메 시 지 를 보 내 거나 다른 라 이브 러 리 의 리 셋 함수 가 이 메 시 지 를 보 내 면 위의 클래스 의 정 의 는 메 시 지 를 보 내 는 클래스 와 같은 파일 로 정의 할 수 있 습 니 다.
EventBus.getDefault().post(new MessageEvent(1,“id”);

네 번 째 단계:수신 자 부분 을 작성 합 니 다.(수신 자 와 발송 자 는 임의의 스 레 드,임의의 activity,fragment 일 수 있 습 니 다.
//  MessageEvent                   .
@Subscribe(threadMode = ThreadMode.MAIN) //           ui  ,           
public void onMessageEvent(MainActivity.MessageEvent event) {
    //Toast.makeText(getActivity(), "from fragment: "+event.pos, Toast.LENGTH_SHORT).show();
 if (indexOfFragment == event.pos) { // the current page is been selected//                     
        System.out.println("the current page is been selected page is "+ event.pos);
        //only do this on current page
        //todo send update ui msg

    }
}

STEP 5:등록 수용자
이 위 에 지식 은 수신 자 를 준비 하고 있 지만 이벤트 버스 에 등록 되 지 않 아 아직 소식 을 듣 지 못 했다.
수신 함수 가 있 는 클래스 에서 수신 자 를 등록 합 니 다.예 를 들 어 Fragmet 이나 activity 에 있 습 니 다.
@Override
public void onPause() {
    super.onPause();
    EventBus.getDefault().unregister(this);
    System.out.println("fragment ::::: un register"+this);

}

@Override
public void onResume() {
    super.onResume();
    EventBus.getDefault().register(this);
    System.out.println("fragment ::::: register address:" + this);
}
여기 서 onStart 와 onStop 에서 하지 않도록 주의 하 세 요.구체 적 인 원인 은 분석 되 지 않 았 지만 onStart 와 onStop 을 사용 하면 사용 할 때 나타 납 니 다.메 시 지 를 받 고 ui 가 업데이트 되 지 않 는 현상(수신 자 는 fragment 안에 있 습 니 다)

좋은 웹페이지 즐겨찾기