2014-05-19 5 views
2

나는 아직도 이해가 Handler를 사용 할 수 있는지 궁금 :이벤트 버스/오토에서 핸들러를 사용 하시겠습니까? 오토와 EventBus 같은 라이브러리와

핸들러를 보내고 스레드의 MessageQueue가와 관련된 프로세스 메시지와의 Runnable 객체 할 수 있습니다. 각 Handler 인스턴스는 단일 스레드 및 해당 스레드의 메시지 큐와 연관된 입니다.

이벤트 버스 라이브러리 외에 핸들러를 어떻게 사용할 수 있습니까? 내가 바닐라 스레드를 사용하고 이벤트 버스를 통해 직접 메시지를 보내면 충분하다고 생각해 보니 여기에 뭔가 빠졌는가?

+0

왜 downvote? – Mahoni

+0

"이벤트 버스 라이브러리 외에 핸들러를 어떻게 사용할 수 있습니까?" - 왜 니가 필요하다고 생각하니? – CommonsWare

+0

그건 내 아주 질문이야 @ CommonSWare – Mahoni

답변

10

일반적으로 서로 다른 문제점에 대해 이벤트 버스 라이브러리와 핸들러를 사용합니다.

이벤트 버스 라이브러리는 정보 소비자가 게시자와 가입자 구성 요소가 서로에 대해 실제로 알 필요가없는 특정 이벤트와 제작자를 구독 할 수있게 해줍니다. 한 명 이상의 소비자가 이벤트에 가입 할 수 있습니다. 둘 이상의 제작자가 게시 할 수 있습니다. 모델은 다 대다입니다.

핸들러는 일대일입니다. Message를 보내거나 Runnable을 게시하면 실행 전에 제거되지 않는 한 대상 처리기에서만 처리됩니다. 핸들러의 핵심 목적은 인용 한 문서에서 언급 한 것처럼 스레드에 대한 작업을 예약하는 것입니다.

핸들러와 메시지를 사용하여 이벤트 버스를 구현하십시오. 예를 들어 버스를 처리기 모음과 이벤트 메시지로 구성 할 수 있습니다. 이벤트 메시지는 특정 이벤트 유형의 등록자로서 등록 된 핸들러로 보내집니다.