2012-03-31 15 views
12

Jestem trochę zdezorientowany z dokumentacją dotyczącą różnych typów nadawania emisji w systemie Android. Na przykład: sendStickyBroadcast(), sendBroadcast(), i sendStickyOrderedBroadcast().różnice między różnymi rodzajami transmisji w Androidzie

Jaka jest różnica między transmisją lepką, normalną i uporządkowaną?

Odpowiedz

46

Można porównać transmisję lepką z karteczką samoprzylepną. Ktoś ją publikuje i możesz przeczytać, kiedy przejeżdżasz/twoja aplikacja się uruchamia - niezależnie od tego, kiedy została opublikowana.

Zamówiona transmisja jest jak przekazanie notatki - przechodzi od osoby/aplikacji do osoby/aplikacji. W dowolnym miejscu łańcucha odbiorca może anulować transmisję, uniemożliwiając widzenie pozostałej części łańcucha.

Normalna transmisja ... cóż, po prostu wysyła do wszystkich, którzy mają pozwolenie na zarejestrowanie się pod numerem &.

Jest odmianą audycji, które pozwalają jedynie odbiorniki zarejestrowany w działającej aplikacji ich słuchać - czyli odbiornik w swojej AndroidManifest.xml będzie nie wyzwalania tych zamiarów.

+1

ładne wyjaśnienie! – Akhil

+0

bardzo dobre wyjaśnienie. –

26

Normalne transmisje: -Normalne transmisje (wysłane z Context.sendBroadcast) są całkowicie asynchroniczne. Wszyscy odbiorcy transmisji są uruchamiani w niezdefiniowanej kolejności, często w tym samym czasie. Jest to bardziej efektywne, ale oznacza, że ​​odbiorniki nie mogą używać wyników lub przerwać API zawarte tutaj.

Rozkazy nadawane: - Rozkaz nadawany to rodzaj transmisji, który jest wysyłany w sposób synchroniczny, tj. Jeden po drugim do każdego słuchacza.

Metoda Android sendOrderedBroadcast objęta jest klasą Kontekst Androida, celem tej metody jest transmisja do odbiorników nasłuchujących w postaci szeregowej i otrzymanie wyniku z powrotem do aktywności wywołującej. Szukałem czegoś takiego jak Android sendOrderedBroadcast od dawna, ale nie mogłem go znaleźć. Kolejną kluczową zaletą sendOrderedBroadcast jest to, że możemy ustawić priorytet BroadcastReceiver. W ten sposób wszystkie BroadcastReceivers słuchające tej konkretnej transmisji otrzymają tę konkretną transmisję w uporządkowany sposób. Odkąd odbieramy transmisje w uporządkowany sposób, może istnieć przypadek, gdy chcesz przerwać przepływ odbiorników, zgadnij, co można zrobić, przez abortBroadcast().

Sticky transmisje: - lepkiej Broadcast Broadcast to, że pozostaje wokół następujących chwili jest ogłoszony w systemie. Większość audycji jest wysyłana, przetwarzana w systemie i szybko staje się niedostępna. Jednak Sticky Broadcasts ogłaszają informacje, które pozostają dostępne poza punktem, w którym są przetwarzane. Typowym przykładem jest poziom naładowania baterii. W przeciwieństwie do większości emisji, poziom naładowania baterii może być pobierany w aplikacjach wykraczających poza punkt, w którym został przesłany przez system. Oznacza to, że aplikacje mogą dowiedzieć się, jaka była ostatnia transmisja z poziomu baterii.

+0

Zgaduję, że możesz powiedzieć, że uporządkowane transmisje są synchroniczne, ponieważ są wysyłane do odbiorców według priorytetu. Wywołanie jest jednak nadal asynchroniczne (w przypadku jakiegokolwiek zamieszania). – Alan

Powiązane problemy