2012-03-31 3 views
12

Android에서 다양한 브로드 캐스트 전송과 관련된 설명서와 다소 혼동 스럽습니다. 예를 들어, sendStickyBroadcast(), sendBroadcast(), sendOrderedBroadcast()sendStickyOrderedBroadcast()이 있습니다.android의 여러 유형의 브로드 캐스트 간의 차이점

끈적 거리는 일반 방송과 주문한 방송의 차이점은 무엇입니까?

답변

46

스티커 방송과 스티커 메모를 비교할 수 있습니다. 누군가 게시물을 올리면 게시 시점과 관계없이 전달/응용 프로그램 시작시 읽을 수 있습니다.

주문형 방송은 메모를 전달하는 것과 같습니다.이 광고는 사람/응용 프로그램에서 사람/응용 프로그램으로 전달됩니다. 체인의 어느 곳에서나받는 사람은 브로드 캐스트를 취소하여 체인의 나머지 부분이이를 볼 수 없도록 선택할 수 있습니다.

정상적인 방송은 ... 음, 그냥 들으려고 모든 사람에게 보냅니다. &이 (가) 듣고 있습니다.

은 수신기가 그들에게 듣고 실행중인 응용 프로그램에 을 등록 할 수 방송의 변형있다 - 즉 당신의 AndroidManifest.xml에서 수신기 것이다 하지 이러한 텐트에 대한 트리거.

+1

멋진 설명! – Akhil

+0

아주 좋은 설명. –

26

일반 방송 : 일반 방송 (Context.sendBroadcast와 함께 전송)은 완전히 비동기식입니다. 브로드 캐스트의 모든 수신자는 정의되지 않은 순서대로 (종종 같은 시간에) 실행됩니다. 이것은 더 효율적이지만 수신기가 결과를 사용하거나 여기에 포함 된 API를 중단 할 수 없음을 의미합니다.

정렬 된 방송 : - 정렬 된 방송은 동기 방식으로, 즉 각 수신기에 하나씩 전송되는 브로드 캐스트의 유형입니다.

Android sendOrderedBroadcast 메소드가 Android의 Context 클래스에 속하므로이 메소드의 목적은 수신 대기자에게 직렬화 방식으로 브로드 캐스트하고 결과를 호출 활동으로 수신하는 것입니다. 나는 오래전에 안드로이드 sendOrderedBroadcast와 같은 것을 찾고 있었으나 그것을 찾을 수 없었다. sendOrderedBroadcast의 또 다른 주요 이점은 BroadcastReceiver의 우선 순위를 설정할 수 있다는 것입니다. 이 방식으로 특정 방송을 청취하는 모든 방송 수신자는 특정 방송을 순서대로 수신하게됩니다. 이제 순서대로 브로드 캐스트를 수신하고 있기 때문에, abortBroadcast()를 통해 수신기의 흐름을 중단하고 심지어 이것이 수행 할 수있는 상황을 추측하고자하는 경우가있을 수 있습니다.

스티커 방송을 : - 스티커 방송은 시스템에 발표되는 순간 다음 주위에 유지 브로드 캐스트입니다. 대부분의 브로드 캐스트는 시스템 내에서 처리되고 처리되며 빠르게 액세스 할 수 없게됩니다. 그러나 스티키 브로드 캐스트는 정보가 처리되는 시점을 넘어서도 액세스 할 수있는 정보를 발표합니다. 일반적인 예는 배터리 레벨 브로드 캐스트입니다. 대부분의 브로드 캐스트와 달리 배터리 수준은 응용 프로그램 내에서 시스템을 통해 전송 된 지점을 넘어서 검색 될 수 있습니다. 이는 앱이 마지막 배터리 수준의 방송이 무엇인지 찾아 낼 수 있음을 의미합니다.

+0

주문한 브로드 캐스트는 우선 순위에 따라 리스너에게 전송되므로 동기식이라고 말할 수 있습니다. 호출은 여전히 ​​비동기이지만 (혼동이있을 경우를 대비하여). – Alan

관련 문제