2017-04-06 3 views
-1

다음과 같은 하나의 활동에 이벤트 버스를 등록했습니다. - EventBus.getDefault.register (this);공통 이벤트 버스 인스턴스

하지만 이제 다른 활동으로 등록을 취소하고 싶습니다. 어떻게해야합니까?

+0

이벤트 버스 등록 해제가 필요합니다 (http://stackoverflow.com/questions/30486497/is-an-event-bus-unregister-necessary) –

+0

동일한 등록 된 활동으로 등록 해제를 할 수 있습니다 등록 된 활동에 대한 참조가있는 경우 다른 활동으로 그러나 onPause 상태에서 활동을 등록 취소하는 것이 좋습니다. 그렇지 않으면 메모리 누수가 발생합니다. – Krish

+0

@Krish는 간단한 예를 들어 주시겠습니까? – sanil

답변

1

하지만 이제 다른 활동으로 등록을 취소하고 싶습니다.

등록되지 않았으므로 다른 활동을 등록 해제 할 수 없습니다. 등록한 동일한 오브젝트의 등록을 취소해야합니다. 대개는 onResume()/onPause()이 좋습니다.

+0

하지만 내가 백그라운드에서 내 응용 프로그램을 제거 할 때 내가 onStart()에 등록하고 onDestroy() 메소드에서 등록을 취소 할 때 해당 활동의 eventbus 등록을 취소해야합니까? – sanil

+0

이것은 나쁜 디자인처럼 들립니다. 당신이 당신의 활동을 배경에있을 때 등록해야합니까? 사용자는 절대로 다시 돌아올 수 없으므로 아무런 의미가 없습니다. –

+0

아니요, 이벤트 게시로 다른 활동에서 호출해야하는 실행 프로그램 활동에 구독자 메서드를 하나 만들었 기 때문에 OnPause() 대신 onDestroy()에서 이벤트 버스 등록을 취소합니다. 그러나 응용 프로그램이 백그라운드에서 제거되면 어떻게 그 이벤트 버스 등록을 취소해야합니까? – sanil

관련 문제