Komunikacja między usługą a aktywnością na Androidzie

Jakie są sposoby komunikacji między działaniem a usługą na Androidzie?

Dzisiaj dowiedziałem się, jak komunikować się, wysyłając Intent from Activity i odpowiadając za pomocą BroadcastRecevier.

Jakie są moje inne opcje? Czy ktoś ma tutorial / referencję dotyczącą tego?

Odpowiedź na to pytanie brzmi:

Istnieje kilka sposobów komunikowania się aktywności z usługą i odwrotnie. Ta sekcja omawia różne sposoby i podaje zalecenia, których należy użyć.

5.1. Powiązanie działań z usługą lokalną Jeśli usługa jest uruchamiana w tym samym procesie, co działanie, działanie może bezpośrednio wiązać się z usługą. Jest to stosunkowo prosty i skuteczny sposób komunikacji.

5.2. Korzystanie z odbiornika Do komunikacji można również użyć dynamicznie zarejestrowanych odbiorników. Na przykład Twoja aktywność może dynamicznie rejestrować odbiornik, a usługa wysyła odpowiednie zdarzenia.

5.3. AIDL dla usług w innym procesie Aby powiązać z usługą, która działa w innym procesie, należy użyć komunikacji między procesami (IPC), ponieważ dane muszą być przesyłane między różnymi procesami. W tym celu musisz utworzyć plik AIDL, który wygląda podobnie do interfejsu Java, ale kończy się rozszerzeniem pliku .aidl i może rozszerzać tylko inne pliki AIDL.

Takie podejście jest wymagane, jeśli twoja usługa powinna być dostarczona do innych aplikacji, w przeciwnym razie powinieneś wybrać usługę lokalną.

5.4. Wysyłanie danych zamiaru i wiązanie do usług Usługa odbiera dane z początkowego komponentu Androida i może korzystać z tych danych.

5.5. Handler i Messenger Jeśli usługa powinna komunikować się z powrotem do działania, może odebrać obiekt typu Messenger za pośrednictwem danych intencji otrzymanych z działania. Jeśli Messenger jest związany z Handlerem w działaniu, usługa może wysyłać obiekty typu Wiadomość do działania.

Komunikator jest paczkowany, co oznacza, że ​​może zostać przekazany do innego procesu i możesz użyć tego obiektu do wysyłania wiadomości do obsługi w trakcie działania.

Messenger udostępnia również metodę getBinder (), która umożliwia przekazanie komunikatora do działania. Aktywność może zatem wysyłać wiadomości do usługi.

Dziękihttp://www.vogella.com/articles/AndroidServices/article.html

questionAnswers(2)

yourAnswerToTheQuestion