greenrobot EventBus 사용 실천
5446 단어 Android
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 안에 있 습 니 다)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.